{"version":3,"file":"js/5524-4231a0f15be9a9078300.js","mappings":"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SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAC1B,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACtF,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACtF,SAAU,IAAM,SAAU,IAC1B,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,KAAM,SAAU,KAC1B,SAAU,KAAM,SAAU,KAC1B,SAAU,KAAM,SAAU,gBCrDxBw0E,EAAU,8CAeVoC,EAAc7D,OANJ,kDAMoB,KAyBlC,MALA,SAAgBj3B,GAEd,OADAA,GAAS,OAASA,KACDA,EAAOpsC,QAAQ8kE,EAAS,GAAc9kE,QAAQknE,EAAa,GAC9E,iICzBIp7E,EAHcN,OAAOK,UAGQC,eA2DjC,IAxBA,SAAiBoE,GACf,GAAa,MAATA,EACF,OAAO,EAET,IAAI,OAAYA,MACX,OAAQA,IAA0B,iBAATA,GAA4C,mBAAhBA,EAAMyL,SAC1D,OAASzL,KAAU,OAAaA,KAAU,OAAYA,IAC1D,OAAQA,EAAMrD,OAEhB,IAAIioF,GAAM,OAAO5kF,GACjB,GApDW,gBAoDP4kF,GAnDO,gBAmDUA,EACnB,OAAQ5kF,EAAM4hB,KAEhB,IAAI,OAAY5hB,GACd,QAAQ,OAASA,GAAOrD,OAE1B,IAAK,IAAIyD,KAAOJ,EACd,GAAIpE,EAAeC,KAAKmE,EAAOI,GAC7B,OAAO,EAGX,OAAO,CACT,sHCrDA,MAVA,SAAiBu6E,EAAYrB,GAC3B,IAAI/9D,GAAS,EACT/X,GAAS,EAAAgpF,EAAA,GAAY7R,GAAcl/E,MAAMk/E,EAAWh+E,QAAU,GAKlE,OAHA,OAASg+E,GAAY,SAAS36E,EAAOI,EAAKu6E,GACxCn3E,IAAS+X,GAAS+9D,EAASt5E,EAAOI,EAAKu6E,EACzC,IACOn3E,CACT,aCiCA,MALA,SAAam3E,EAAYrB,GAEvB,QADW,EAAAjwE,EAAA,GAAQsxE,GAAc,IAAW,GAChCA,GAAY,OAAarB,EAAU,GACjD","sources":["webpack://halo/./node_modules/@appsignal/react/dist/esm/ErrorBoundary.js","webpack://halo/./node_modules/@appsignal/react/dist/esm/LegacyBoundary.js","webpack://halo/./node_modules/ably/build/ably-commonjs.js","webpack://halo/./node_modules/aphrodite/es/chunk-febce46b.js","webpack://halo/./node_modules/aphrodite/es/index.js","webpack://halo/./node_modules/dayjs-business-days2/dist/index.js","webpack://halo/./node_modules/dayjs/plugin/localeData.js","webpack://halo/./node_modules/dayjs/plugin/relativeTime.js","webpack://halo/./node_modules/lodash/isEqual.js","webpack://halo/./node_modules/lodash/lodash.js","webpack://halo/./node_modules/pdfjs-dist/build/pdf.js","webpack://halo/./node_modules/rc-util/es/hooks/useEvent.js","webpack://halo/./node_modules/rc-util/es/hooks/useLayoutEffect.js","webpack://halo/./node_modules/rc-util/es/Dom/canUseDom.js","webpack://halo/./node_modules/rc-util/es/hooks/useState.js","webpack://halo/./node_modules/rc-util/es/hooks/useMergedState.js","webpack://halo/./node_modules/rc-util/es/warning.js","webpack://halo/./node_modules/rc-util/es/isEqual.js","webpack://halo/./node_modules/rc-slider/es/util.js","webpack://halo/./node_modules/rc-util/es/KeyCode.js","webpack://halo/./node_modules/rc-slider/es/context.js","webpack://halo/./node_modules/rc-slider/es/Handles/Handle.js","webpack://halo/./node_modules/rc-slider/es/Handles/index.js","webpack://halo/./node_modules/rc-slider/es/Marks/Mark.js","webpack://halo/./node_modules/rc-slider/es/Marks/index.js","webpack://halo/./node_modules/rc-slider/es/Steps/Dot.js","webpack://halo/./node_modules/rc-slider/es/Steps/index.js","webpack://halo/./node_modules/rc-slider/es/Tracks/Track.js","webpack://halo/./node_modules/rc-slider/es/Tracks/index.js","webpack://halo/./node_modules/rc-util/es/ref.js","webpack://halo/./node_modules/rc-util/es/utils/set.js","webpack://halo/./node_modules/rc-slider/es/hooks/useDrag.js","webpack://halo/./node_modules/rc-slider/es/Slider.js","webpack://halo/./node_modules/rc-slider/es/hooks/useOffset.js","webpack://halo/./node_modules/rc-slider/es/index.js","webpack://halo/./node_modules/rc-util/node_modules/react-is/cjs/react-is.production.min.js","webpack://halo/./node_modules/rc-util/node_modules/react-is/index.js","webpack://halo/./node_modules/react-add-to-calendar-hoc/lib/enums.js","webpack://halo/./node_modules/react-add-to-calendar-hoc/lib/index.js","webpack://halo/./node_modules/react-add-to-calendar-hoc/lib/utils.js","webpack://halo/./node_modules/make-event-props/dist/esm/index.js","webpack://halo/./node_modules/make-cancellable-promise/dist/esm/index.js","webpack://halo/./node_modules/tiny-warning/dist/tiny-warning.esm.js","webpack://halo/./node_modules/react-pdf/dist/esm/DocumentContext.js","webpack://halo/./node_modules/react-pdf/dist/esm/Message.js","webpack://halo/./node_modules/react-pdf/dist/esm/LinkService.js","webpack://halo/./node_modules/react-pdf/dist/esm/PasswordResponses.js","webpack://halo/./node_modules/react-pdf/dist/esm/shared/utils.js","webpack://halo/./node_modules/react-pdf/dist/esm/shared/propTypes.js","webpack://halo/./node_modules/react-pdf/dist/esm/Document.js","webpack://halo/./node_modules/react-pdf/dist/esm/OutlineContext.js","webpack://halo/./node_modules/react-pdf/dist/esm/Ref.js","webpack://halo/./node_modules/react-pdf/dist/esm/OutlineItem.js","webpack://halo/./node_modules/react-pdf/dist/esm/Outline.js","webpack://halo/./node_modules/merge-refs/dist/esm/index.js","webpack://halo/./node_modules/react-pdf/dist/esm/PageContext.js","webpack://halo/./node_modules/react-pdf/dist/esm/Page/PageCanvas.js","webpack://halo/./node_modules/react-pdf/dist/esm/Page/PageSVG.js","webpack://halo/./node_modules/react-pdf/dist/esm/Page/TextLayer.js","webpack://halo/./node_modules/react-pdf/dist/esm/Page/AnnotationLayer.js","webpack://halo/./node_modules/react-pdf/dist/esm/Page.js","webpack://halo/./node_modules/react-pdf/dist/esm/entry.webpack5.js","webpack://halo/./node_modules/react-verification-code-input/dist/index.es.js","webpack://halo/./node_modules/redux-persist/es/constants.js","webpack://halo/./node_modules/redux-persist/es/stateReconciler/autoMergeLevel1.js","webpack://halo/./node_modules/redux-persist/es/createPersistoid.js","webpack://halo/./node_modules/redux-persist/es/getStoredState.js","webpack://halo/./node_modules/redux-persist/es/purgeStoredState.js","webpack://halo/./node_modules/redux-persist/es/persistReducer.js","webpack://halo/./node_modules/redux-persist/es/persistStore.js","webpack://halo/./node_modules/redux-persist/es/integration/react.js","webpack://halo/./node_modules/redux-persist/lib/storage/createWebStorage.js","webpack://halo/./node_modules/redux-persist/lib/storage/getStorage.js","webpack://halo/./node_modules/redux-persist/lib/storage/index.js","webpack://halo/./node_modules/redux-thunk/es/index.js","webpack://halo/./node_modules/redux/es/redux.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/addons/Radio/Radio.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/collections/Form/FormField.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/collections/Form/FormButton.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/collections/Form/FormCheckbox.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/collections/Form/FormDropdown.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/collections/Form/FormGroup.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/collections/Form/FormInput.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/collections/Form/FormRadio.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/addons/Select/Select.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/collections/Form/FormSelect.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/addons/TextArea/TextArea.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/collections/Form/FormTextArea.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/collections/Form/Form.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/collections/Grid/GridRow.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/collections/Grid/Grid.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/collections/Grid/GridColumn.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/elements/Button/ButtonContent.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/elements/Button/ButtonGroup.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/elements/Button/ButtonOr.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/elements/Button/Button.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/elements/Container/Container.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Dimmer/DimmerDimmable.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Dimmer/DimmerInner.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Dimmer/Dimmer.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/elements/Image/ImageGroup.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/elements/Image/Image.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/elements/Input/Input.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/elements/Label/LabelDetail.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/elements/Label/LabelGroup.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/elements/Label/Label.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/elements/Loader/Loader.js","webpack://halo/./node_modules/lodash-es/_arrayEach.js","webpack://halo/./node_modules/lodash-es/_castFunction.js","webpack://halo/./node_modules/lodash-es/forEach.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/lib/htmlPropsUtils.js","webpack://halo/./node_modules/lodash-es/set.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Checkbox/Checkbox.js","webpack://halo/./node_modules/lodash-es/compact.js","webpack://halo/./node_modules/lodash-es/_arrayEvery.js","webpack://halo/./node_modules/lodash-es/_baseEvery.js","webpack://halo/./node_modules/lodash-es/every.js","webpack://halo/./node_modules/lodash-es/_baseDifference.js","webpack://halo/./node_modules/lodash-es/isArrayLikeObject.js","webpack://halo/./node_modules/lodash-es/without.js","webpack://halo/./node_modules/lodash-es/_createFind.js","webpack://halo/./node_modules/lodash-es/findIndex.js","webpack://halo/./node_modules/lodash-es/find.js","webpack://halo/./node_modules/lodash-es/dropRight.js","webpack://halo/./node_modules/lodash-es/_asciiSize.js","webpack://halo/./node_modules/lodash-es/_unicodeSize.js","webpack://halo/./node_modules/lodash-es/_stringSize.js","webpack://halo/./node_modules/lodash-es/size.js","webpack://halo/./node_modules/lodash-es/difference.js","webpack://halo/./node_modules/lodash-es/union.js","webpack://halo/./node_modules/lodash-es/isEqual.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/elements/Flag/Flag.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownDivider.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownItem.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownHeader.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownMenu.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownSearchInput.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownText.js","webpack://halo/./node_modules/lodash-es/escapeRegExp.js","webpack://halo/./node_modules/lodash-es/_baseFilter.js","webpack://halo/./node_modules/lodash-es/filter.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/utils/getMenuOptions.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/utils/getSelectedIndex.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/Dropdown.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Modal/ModalActions.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Modal/ModalContent.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Modal/ModalDescription.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/lib/hooks/useIsomorphicLayoutEffect.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/lib/hooks/useClassNamesOnNode.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Modal/ModalDimmer.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Modal/ModalHeader.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Modal/Modal.js","webpack://halo/./node_modules/semantic-ui-react/dist/es/modules/Modal/utils/index.js","webpack://halo/./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","webpack://halo/./node_modules/use-sync-external-store/shim/index.js","webpack://halo/./node_modules/classnames/index.js","webpack://halo/./node_modules/@tanstack/query-core/build/lib/focusManager.mjs","webpack://halo/./node_modules/@tanstack/query-core/build/lib/logger.mjs","webpack://halo/./node_modules/@tanstack/query-core/build/lib/mutation.mjs","webpack://halo/./node_modules/@tanstack/query-core/build/lib/mutationCache.mjs","webpack://halo/./node_modules/@tanstack/query-core/build/lib/notifyManager.mjs","webpack://halo/./node_modules/@tanstack/query-core/build/lib/onlineManager.mjs","webpack://halo/./node_modules/@tanstack/query-core/build/lib/query.mjs","webpack://halo/./node_modules/@tanstack/query-core/build/lib/queryCache.mjs","webpack://halo/./node_modules/@tanstack/query-core/build/lib/infiniteQueryBehavior.mjs","webpack://halo/./node_modules/@tanstack/query-core/build/lib/queryClient.mjs","webpack://halo/./node_modules/@tanstack/query-core/build/lib/removable.mjs","webpack://halo/./node_modules/@tanstack/query-core/build/lib/retryer.mjs","webpack://halo/./node_modules/@tanstack/query-core/build/lib/subscribable.mjs","webpack://halo/./node_modules/@tanstack/query-core/build/lib/utils.mjs","webpack://halo/./node_modules/@tanstack/react-query-devtools/build/lib/index.mjs","webpack://halo/./node_modules/@tanstack/react-query/build/lib/QueryClientProvider.mjs","webpack://halo/./node_modules/@tanstack/query-core/build/lib/mutationObserver.mjs","webpack://halo/./node_modules/@tanstack/react-query/build/lib/useMutation.mjs","webpack://halo/./node_modules/@tanstack/query-core/build/lib/queryObserver.mjs","webpack://halo/./node_modules/@tanstack/react-query/build/lib/QueryErrorResetBoundary.mjs","webpack://halo/./node_modules/@tanstack/react-query/build/lib/isRestoring.mjs","webpack://halo/./node_modules/@tanstack/react-query/build/lib/errorBoundaryUtils.mjs","webpack://halo/./node_modules/@tanstack/react-query/build/lib/suspense.mjs","webpack://halo/./node_modules/@tanstack/react-query/build/lib/useQuery.mjs","webpack://halo/./node_modules/@tanstack/react-query/build/lib/useBaseQuery.mjs","webpack://halo/./node_modules/@tanstack/react-query/build/lib/useSyncExternalStore.mjs","webpack://halo/./node_modules/@tanstack/react-query/build/lib/utils.mjs","webpack://halo/./node_modules/lodash-es/_hasUnicode.js","webpack://halo/./node_modules/lodash-es/_basePropertyOf.js","webpack://halo/./node_modules/lodash-es/_deburrLetter.js","webpack://halo/./node_modules/lodash-es/deburr.js","webpack://halo/./node_modules/lodash-es/isEmpty.js","webpack://halo/./node_modules/lodash-es/_baseMap.js","webpack://halo/./node_modules/lodash-es/map.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport React from \"react\";\nvar ErrorBoundary = (function (_super) {\n __extends(ErrorBoundary, _super);\n function ErrorBoundary() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = { error: undefined };\n return _this;\n }\n ErrorBoundary.getDerivedStateFromError = function (error) {\n return { error: error };\n };\n ErrorBoundary.prototype.componentDidCatch = function (error) {\n var _a = this.props, appsignal = _a.instance, action = _a.action, _b = _a.tags, tags = _b === void 0 ? {} : _b, override = _a.override;\n var span = appsignal.createSpan();\n span.setError(error).setTags(__assign({ framework: \"React\" }, tags));\n if (action && action !== \"\")\n span.setAction(action);\n if (override) {\n span = override(span, error);\n }\n appsignal.send(span);\n if (!this.state.error)\n this.setState({ error: error });\n };\n ErrorBoundary.prototype.render = function () {\n if (this.state.error) {\n return this.props.fallback ? this.props.fallback(this.state.error) : null;\n }\n return this.props.children;\n };\n ErrorBoundary.defaultProps = {\n action: \"\"\n };\n return ErrorBoundary;\n}(React.Component));\nexport { ErrorBoundary };\n//# sourceMappingURL=ErrorBoundary.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport React from \"react\";\nvar LegacyBoundary = (function (_super) {\n __extends(LegacyBoundary, _super);\n function LegacyBoundary() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = { error: undefined };\n return _this;\n }\n LegacyBoundary.prototype.unstable_handleError = function (error) {\n var _a = this.props, appsignal = _a.instance, action = _a.action, _b = _a.tags, tags = _b === void 0 ? {} : _b, override = _a.override;\n var name = error.name, message = error.message, stack = error.stack;\n var span = appsignal.createSpan();\n span\n .setError({\n name: name,\n message: message,\n stack: stack\n })\n .setTags(__assign({ framework: \"Legacy React\" }, tags));\n if (action && action !== \"\")\n span.setAction(action);\n if (override) {\n span = override(span, error);\n }\n appsignal.send(span);\n this.setState({ error: error });\n };\n LegacyBoundary.prototype.render = function () {\n return (React.createElement(\"div\", null, !this.state.error\n ? this.props.children\n : this.props.fallback\n ? this.props.fallback(this.state.error)\n : null));\n };\n LegacyBoundary.defaultProps = {\n action: \"\"\n };\n return LegacyBoundary;\n}(React.Component));\nexport { LegacyBoundary };\n//# sourceMappingURL=LegacyBoundary.js.map","/*!\n * @license Copyright 2015-2022 Ably Real-time Ltd (ably.com)\n * \n * Ably JavaScript Library v1.2.50\n * https://github.com/ably/ably-js\n * \n * Released under the Apache Licence v2.0\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Ably\"] = factory();\n\telse\n\t\troot[\"Ably\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 42);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__extends\", function() { return __extends; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__assign\", function() { return __assign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__rest\", function() { return __rest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__decorate\", function() { return __decorate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__param\", function() { return __param; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__metadata\", function() { return __metadata; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__awaiter\", function() { return __awaiter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__generator\", function() { return __generator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__createBinding\", function() { return __createBinding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__exportStar\", function() { return __exportStar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__values\", function() { return __values; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__read\", function() { return __read; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__spread\", function() { return __spread; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__spreadArrays\", function() { return __spreadArrays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__spreadArray\", function() { return __spreadArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__await\", function() { return __await; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__asyncGenerator\", function() { return __asyncGenerator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__asyncDelegator\", function() { return __asyncDelegator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__asyncValues\", function() { return __asyncValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__makeTemplateObject\", function() { return __makeTemplateObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__importStar\", function() { return __importStar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__importDefault\", function() { return __importDefault; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__classPrivateFieldGet\", function() { return __classPrivateFieldGet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__classPrivateFieldSet\", function() { return __classPrivateFieldSet; });\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nfunction __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nvar __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nfunction __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nfunction __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nfunction __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nfunction __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nfunction __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nfunction __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nfunction __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nfunction __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.allToUpperCase = exports.allToLowerCase = exports.encodeBody = exports.decodeBody = exports.Format = exports.promisify = exports.trim = exports.arrChooseN = exports.randomHexString = exports.randomString = exports.cheapRandStr = exports.dataSizeBytes = exports.inspectBody = exports.inspectError = exports.isErrorInfoOrPartialErrorInfo = exports.now = exports.parseQueryString = exports.toQueryString = exports.arrPopRandomElement = exports.defaultPostHeaders = exports.defaultGetHeaders = exports.allSame = exports.arrEvery = exports.arrFilter = exports.arrMap = exports.safeArrForEach = exports.arrForEach = exports.forInOwnNonNullProperties = exports.valuesArray = exports.keysArray = exports.arrWithoutValue = exports.arrDeleteValue = exports.arrIn = exports.arrIndexOf = exports.arrSubtract = exports.arrIntersectOb = exports.arrIntersect = exports.intersect = exports.containsValue = exports.inherits = exports.prototypicalClone = exports.shallowClone = exports.isEmptyArg = exports.isOnlyPropIn = exports.isEmpty = exports.isObject = exports.ensureArray = exports.isArray = exports.copy = exports.mixin = void 0;\nexports.arrEquals = exports.toBase64 = exports.matchDerivedChannel = exports.shallowEquals = exports.getGlobalObject = exports.getRetryTime = exports.getJitterCoefficient = exports.getBackoffCoefficient = void 0;\nvar tslib_1 = __webpack_require__(0);\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nvar defaults_1 = tslib_1.__importStar(__webpack_require__(8));\nvar errorinfo_1 = tslib_1.__importDefault(__webpack_require__(4));\nvar enc_base64_1 = __webpack_require__(11);\nvar enc_utf8_1 = __webpack_require__(31);\nfunction randomPosn(arrOrStr) {\n return Math.floor(Math.random() * arrOrStr.length);\n}\n/*\n * Add a set of properties to a target object\n * target: the target object\n * props: an object whose enumerable properties are\n * added, by reference only\n */\nfunction mixin(target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < args.length; i++) {\n var source = args[i];\n if (!source) {\n break;\n }\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n for (var key in source) {\n if (!hasOwnProperty || hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n}\nexports.mixin = mixin;\n/*\n * Add a set of properties to a target object\n * target: the target object\n * props: an object whose enumerable properties are\n * added, by reference only\n */\nfunction copy(src) {\n return mixin({}, src);\n}\nexports.copy = copy;\n/*\n * Determine whether or not a given object is\n * an array.\n */\nexports.isArray = Array.isArray ||\n function (value) {\n return Object.prototype.toString.call(value) == '[object Array]';\n };\n/*\n * Ensures that an Array object is always returned\n * returning the original Array of obj is an Array\n * else wrapping the obj in a single element Array\n */\nfunction ensureArray(obj) {\n if (isEmptyArg(obj)) {\n return [];\n }\n if ((0, exports.isArray)(obj)) {\n return obj;\n }\n return [obj];\n}\nexports.ensureArray = ensureArray;\nfunction isObject(ob) {\n return Object.prototype.toString.call(ob) == '[object Object]';\n}\nexports.isObject = isObject;\n/*\n * Determine whether or not an object contains\n * any enumerable properties.\n * ob: the object\n */\nfunction isEmpty(ob) {\n for (var prop in ob)\n return false;\n return true;\n}\nexports.isEmpty = isEmpty;\nfunction isOnlyPropIn(ob, property) {\n for (var prop in ob) {\n if (prop !== property) {\n return false;\n }\n }\n return true;\n}\nexports.isOnlyPropIn = isOnlyPropIn;\n/*\n * Determine whether or not an argument to an overloaded function is\n * undefined (missing) or null.\n * This method is useful when constructing functions such as (WebIDL terminology):\n * off([TreatUndefinedAs=Null] DOMString? event)\n * as you can then confirm the argument using:\n * Utils.isEmptyArg(event)\n */\nfunction isEmptyArg(arg) {\n return arg === null || arg === undefined;\n}\nexports.isEmptyArg = isEmptyArg;\n/*\n * Perform a simple shallow clone of an object.\n * Result is an object irrespective of whether\n * the input is an object or array. All\n * enumerable properties are copied.\n * ob: the object\n */\nfunction shallowClone(ob) {\n var result = new Object();\n for (var prop in ob)\n result[prop] = ob[prop];\n return result;\n}\nexports.shallowClone = shallowClone;\n/*\n * Clone an object by creating a new object with the\n * given object as its prototype. Optionally\n * a set of additional own properties can be\n * supplied to be added to the newly created clone.\n * ob: the object to be cloned\n * ownProperties: optional object with additional\n * properties to add\n */\nfunction prototypicalClone(ob, ownProperties) {\n var F = /** @class */ (function () {\n function F() {\n }\n return F;\n }());\n F.prototype = ob;\n var result = new F();\n if (ownProperties)\n mixin(result, ownProperties);\n return result;\n}\nexports.prototypicalClone = prototypicalClone;\n/*\n * Declare a constructor to represent a subclass\n * of another constructor\n * If platform has a built-in version we use that from Platform, else we\n * define here (so can make use of other Utils fns)\n * See node.js util.inherits\n */\nvar inherits = function (ctor, superCtor) {\n if (platform_1.default.Config.inherits) {\n platform_1.default.Config.inherits(ctor, superCtor);\n return;\n }\n ctor.super_ = superCtor;\n ctor.prototype = prototypicalClone(superCtor.prototype, { constructor: ctor });\n};\nexports.inherits = inherits;\n/*\n * Determine whether or not an object has an enumerable\n * property whose value equals a given value.\n * ob: the object\n * val: the value to find\n */\nfunction containsValue(ob, val) {\n for (var i in ob) {\n if (ob[i] == val)\n return true;\n }\n return false;\n}\nexports.containsValue = containsValue;\nfunction intersect(arr, ob) {\n return (0, exports.isArray)(ob) ? arrIntersect(arr, ob) : arrIntersectOb(arr, ob);\n}\nexports.intersect = intersect;\nfunction arrIntersect(arr1, arr2) {\n var result = [];\n for (var i = 0; i < arr1.length; i++) {\n var member = arr1[i];\n if ((0, exports.arrIndexOf)(arr2, member) != -1)\n result.push(member);\n }\n return result;\n}\nexports.arrIntersect = arrIntersect;\nfunction arrIntersectOb(arr, ob) {\n var result = [];\n for (var i = 0; i < arr.length; i++) {\n var member = arr[i];\n if (member in ob)\n result.push(member);\n }\n return result;\n}\nexports.arrIntersectOb = arrIntersectOb;\nfunction arrSubtract(arr1, arr2) {\n var result = [];\n for (var i = 0; i < arr1.length; i++) {\n var element = arr1[i];\n if ((0, exports.arrIndexOf)(arr2, element) == -1)\n result.push(element);\n }\n return result;\n}\nexports.arrSubtract = arrSubtract;\nexports.arrIndexOf = Array.prototype.indexOf\n ? function (arr, elem, fromIndex) {\n return arr.indexOf(elem, fromIndex);\n }\n : function (arr, elem, fromIndex) {\n fromIndex = fromIndex || 0;\n var len = arr.length;\n for (; fromIndex < len; fromIndex++) {\n if (arr[fromIndex] === elem) {\n return fromIndex;\n }\n }\n return -1;\n };\nfunction arrIn(arr, val) {\n return (0, exports.arrIndexOf)(arr, val) !== -1;\n}\nexports.arrIn = arrIn;\nfunction arrDeleteValue(arr, val) {\n var idx = (0, exports.arrIndexOf)(arr, val);\n var res = idx != -1;\n if (res)\n arr.splice(idx, 1);\n return res;\n}\nexports.arrDeleteValue = arrDeleteValue;\nfunction arrWithoutValue(arr, val) {\n var newArr = arr.slice();\n arrDeleteValue(newArr, val);\n return newArr;\n}\nexports.arrWithoutValue = arrWithoutValue;\n/*\n * Construct an array of the keys of the enumerable\n * properties of a given object, optionally limited\n * to only the own properties.\n * ob: the object\n * ownOnly: boolean, get own properties only\n */\nfunction keysArray(ob, ownOnly) {\n var result = [];\n for (var prop in ob) {\n if (ownOnly && !Object.prototype.hasOwnProperty.call(ob, prop))\n continue;\n result.push(prop);\n }\n return result;\n}\nexports.keysArray = keysArray;\n/*\n * Construct an array of the values of the enumerable\n * properties of a given object, optionally limited\n * to only the own properties.\n * ob: the object\n * ownOnly: boolean, get own properties only\n */\nfunction valuesArray(ob, ownOnly) {\n var result = [];\n for (var prop in ob) {\n if (ownOnly && !Object.prototype.hasOwnProperty.call(ob, prop))\n continue;\n result.push(ob[prop]);\n }\n return result;\n}\nexports.valuesArray = valuesArray;\nfunction forInOwnNonNullProperties(ob, fn) {\n for (var prop in ob) {\n if (Object.prototype.hasOwnProperty.call(ob, prop) && ob[prop]) {\n fn(prop);\n }\n }\n}\nexports.forInOwnNonNullProperties = forInOwnNonNullProperties;\nexports.arrForEach = Array.prototype.forEach\n ? function (arr, fn) {\n arr.forEach(fn);\n }\n : function (arr, fn) {\n var len = arr.length;\n for (var i = 0; i < len; i++) {\n fn(arr[i], i, arr);\n }\n };\n/* Useful when the function may mutate the array */\nfunction safeArrForEach(arr, fn) {\n return (0, exports.arrForEach)(arr.slice(), fn);\n}\nexports.safeArrForEach = safeArrForEach;\nexports.arrMap = Array.prototype.map\n ? function (arr, fn) {\n return arr.map(fn);\n }\n : function (arr, fn) {\n var result = [];\n var len = arr.length;\n for (var i = 0; i < len; i++) {\n result.push(fn(arr[i], i, arr));\n }\n return result;\n };\nexports.arrFilter = Array.prototype.filter\n ? function (arr, fn) {\n return arr.filter(fn);\n }\n : function (arr, fn) {\n var result = [], len = arr.length;\n for (var i = 0; i < len; i++) {\n if (fn(arr[i])) {\n result.push(arr[i]);\n }\n }\n return result;\n };\nexports.arrEvery = Array.prototype.every\n ? function (arr, fn) {\n return arr.every(fn);\n }\n : function (arr, fn) {\n var len = arr.length;\n for (var i = 0; i < len; i++) {\n if (!fn(arr[i], i, arr)) {\n return false;\n }\n }\n return true;\n };\nfunction allSame(arr, prop) {\n if (arr.length === 0) {\n return true;\n }\n var first = arr[0][prop];\n return (0, exports.arrEvery)(arr, function (item) {\n return item[prop] === first;\n });\n}\nexports.allSame = allSame;\nvar contentTypes = {\n json: 'application/json',\n jsonp: 'application/javascript',\n xml: 'application/xml',\n html: 'text/html',\n msgpack: 'application/x-msgpack',\n};\nfunction defaultGetHeaders(options, format) {\n var accept = contentTypes[format || Format.json];\n return {\n accept: accept,\n 'X-Ably-Version': defaults_1.default.protocolVersion.toString(),\n 'Ably-Agent': (0, defaults_1.getAgentString)(options),\n };\n}\nexports.defaultGetHeaders = defaultGetHeaders;\nfunction defaultPostHeaders(options, format) {\n var contentType;\n var accept = (contentType = contentTypes[format || Format.json]);\n return {\n accept: accept,\n 'content-type': contentType,\n 'X-Ably-Version': defaults_1.default.protocolVersion.toString(),\n 'Ably-Agent': (0, defaults_1.getAgentString)(options),\n };\n}\nexports.defaultPostHeaders = defaultPostHeaders;\nfunction arrPopRandomElement(arr) {\n return arr.splice(randomPosn(arr), 1)[0];\n}\nexports.arrPopRandomElement = arrPopRandomElement;\nfunction toQueryString(params) {\n var parts = [];\n if (params) {\n for (var key in params)\n parts.push(encodeURIComponent(key) + '=' + encodeURIComponent(params[key]));\n }\n return parts.length ? '?' + parts.join('&') : '';\n}\nexports.toQueryString = toQueryString;\nfunction parseQueryString(query) {\n var match;\n var search = /([^?&=]+)=?([^&]*)/g;\n var result = {};\n while ((match = search.exec(query)))\n result[decodeURIComponent(match[1])] = decodeURIComponent(match[2]);\n return result;\n}\nexports.parseQueryString = parseQueryString;\nexports.now = Date.now ||\n function () {\n /* IE 8 */\n return new Date().getTime();\n };\nfunction isErrorInfoOrPartialErrorInfo(err) {\n return (typeof err == 'object' &&\n err !== null &&\n (err.constructor.name == 'ErrorInfo' || err.constructor.name == 'PartialErrorInfo'));\n}\nexports.isErrorInfoOrPartialErrorInfo = isErrorInfoOrPartialErrorInfo;\nfunction inspectError(err) {\n var _a, _b;\n if (err instanceof Error ||\n ((_a = err === null || err === void 0 ? void 0 : err.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'ErrorInfo' ||\n ((_b = err === null || err === void 0 ? void 0 : err.constructor) === null || _b === void 0 ? void 0 : _b.name) === 'PartialErrorInfo')\n return err.toString();\n return platform_1.default.Config.inspect(err);\n}\nexports.inspectError = inspectError;\nfunction inspectBody(body) {\n if (platform_1.default.BufferUtils.isBuffer(body)) {\n return body.toString();\n }\n else if (typeof body === 'string') {\n return body;\n }\n else {\n return platform_1.default.Config.inspect(body);\n }\n}\nexports.inspectBody = inspectBody;\n/* Data is assumed to be either a string or a buffer. */\nfunction dataSizeBytes(data) {\n if (platform_1.default.BufferUtils.isBuffer(data)) {\n return platform_1.default.BufferUtils.byteLength(data);\n }\n if (typeof data === 'string') {\n return platform_1.default.Config.stringByteSize(data);\n }\n throw new Error('Expected input of Utils.dataSizeBytes to be a buffer or string, but was: ' + typeof data);\n}\nexports.dataSizeBytes = dataSizeBytes;\nfunction cheapRandStr() {\n return String(Math.random()).substr(2);\n}\nexports.cheapRandStr = cheapRandStr;\n/* Takes param the minimum number of bytes of entropy the string must\n * include, not the length of the string. String length produced is not\n * guaranteed. */\nvar randomString = function (numBytes) {\n if (platform_1.default.Config.getRandomValues && typeof Uint8Array !== 'undefined') {\n var uIntArr = new Uint8Array(numBytes);\n platform_1.default.Config.getRandomValues(uIntArr);\n return platform_1.default.BufferUtils.base64Encode(uIntArr);\n }\n /* Old browser; fall back to Math.random. Could just use a\n * CryptoJS version of the above, but want this to still work in nocrypto\n * versions of the library */\n var charset = platform_1.default.BufferUtils.base64CharSet;\n /* base64 has 33% overhead; round length up */\n var length = Math.round((numBytes * 4) / 3);\n var result = '';\n for (var i = 0; i < length; i++) {\n result += charset[randomPosn(charset)];\n }\n return result;\n};\nexports.randomString = randomString;\nvar randomHexString = function (numBytes) {\n if (platform_1.default.Config.getRandomValues && typeof Uint8Array !== 'undefined') {\n var uIntArr = new Uint8Array(numBytes);\n platform_1.default.Config.getRandomValues(uIntArr);\n return platform_1.default.BufferUtils.hexEncode(uIntArr);\n }\n var charset = platform_1.default.BufferUtils.hexCharSet;\n var length = numBytes * 2;\n var result = '';\n for (var i = 0; i < length; i++) {\n result += charset[randomPosn(charset)];\n }\n return result;\n};\nexports.randomHexString = randomHexString;\n/* Pick n elements at random without replacement from an array */\nfunction arrChooseN(arr, n) {\n var numItems = Math.min(n, arr.length), mutableArr = arr.slice(), result = [];\n for (var i = 0; i < numItems; i++) {\n result.push(arrPopRandomElement(mutableArr));\n }\n return result;\n}\nexports.arrChooseN = arrChooseN;\nexports.trim = String.prototype.trim\n ? function (str) {\n return str.trim();\n }\n : function (str) {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n };\nfunction promisify(ob, fnName, args) {\n return new Promise(function (resolve, reject) {\n ob[fnName].apply(ob, tslib_1.__spreadArray(tslib_1.__spreadArray([], args, false), [function (err, res) {\n err ? reject(err) : resolve(res);\n }], false));\n });\n}\nexports.promisify = promisify;\nvar Format;\n(function (Format) {\n Format[\"msgpack\"] = \"msgpack\";\n Format[\"json\"] = \"json\";\n})(Format = exports.Format || (exports.Format = {}));\nfunction decodeBody(body, format) {\n return format == 'msgpack' ? platform_1.default.Config.msgpack.decode(body) : JSON.parse(String(body));\n}\nexports.decodeBody = decodeBody;\nfunction encodeBody(body, format) {\n return format == 'msgpack' ? platform_1.default.Config.msgpack.encode(body, true) : JSON.stringify(body);\n}\nexports.encodeBody = encodeBody;\nfunction allToLowerCase(arr) {\n return arr.map(function (element) {\n return element && element.toLowerCase();\n });\n}\nexports.allToLowerCase = allToLowerCase;\nfunction allToUpperCase(arr) {\n return arr.map(function (element) {\n return element && element.toUpperCase();\n });\n}\nexports.allToUpperCase = allToUpperCase;\nfunction getBackoffCoefficient(count) {\n return Math.min((count + 2) / 3, 2);\n}\nexports.getBackoffCoefficient = getBackoffCoefficient;\nfunction getJitterCoefficient() {\n return 1 - Math.random() * 0.2;\n}\nexports.getJitterCoefficient = getJitterCoefficient;\n/**\n *\n * @param initialTimeout initial timeout value\n * @param retryAttempt integer indicating retryAttempt\n * @returns RetryTimeout value for given timeout and retryAttempt.\n * If x is the value generated then,\n * Upper bound = min((retryAttempt + 2) / 3, 2) * initialTimeout,\n * Lower bound = 0.8 * Upper bound,\n * Lower bound < x < Upper bound\n */\nfunction getRetryTime(initialTimeout, retryAttempt) {\n return initialTimeout * getBackoffCoefficient(retryAttempt) * getJitterCoefficient();\n}\nexports.getRetryTime = getRetryTime;\nfunction getGlobalObject() {\n if (global) {\n return global;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n return self;\n}\nexports.getGlobalObject = getGlobalObject;\nfunction shallowEquals(source, target) {\n return (Object.keys(source).every(function (key) { return source[key] === target[key]; }) &&\n Object.keys(target).every(function (key) { return target[key] === source[key]; }));\n}\nexports.shallowEquals = shallowEquals;\nfunction matchDerivedChannel(name) {\n /**\n * This regex check is to retain existing channel params if any e.g [?rewind=1]foo to\n * [filter=xyz?rewind=1]foo. This is to keep channel compatibility around use of\n * channel params that work with derived channels.\n *\n * This eslint unsafe regex warning is triggered because the RegExp uses nested quantifiers,\n * but it does not create any situation where the regex engine has to\n * explore a large number of possible matches so it’s safe to ignore\n */\n var regex = /^(\\[([^?]*)(?:(.*))\\])?(.+)$/; // eslint-disable-line\n var match = name.match(regex);\n if (!match || !match.length || match.length < 5) {\n throw new errorinfo_1.default('regex match failed', 400, 40010);\n }\n // Fail if there is already a channel qualifier, eg [meta]foo should fail instead of just overriding with [filter=xyz]foo\n if (match[2]) {\n throw new errorinfo_1.default(\"cannot use a derived option with a \".concat(match[2], \" channel\"), 400, 40010);\n }\n // Return match values to be added to derive channel quantifier.\n return {\n qualifierParam: match[3] || '',\n channelName: match[4],\n };\n}\nexports.matchDerivedChannel = matchDerivedChannel;\nfunction toBase64(str) {\n if (platform_1.default.Config.createHmac) {\n return Buffer.from(str, 'ascii').toString('base64');\n }\n return (0, enc_base64_1.stringify)((0, enc_utf8_1.parse)(str));\n}\nexports.toBase64 = toBase64;\nfunction arrEquals(a, b) {\n return (a.length === b.length &&\n (0, exports.arrEvery)(a, function (val, i) {\n return val === b[i];\n }));\n}\nexports.arrEquals = arrEquals;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13)))\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\n// Workaround for salesforce lightning locker compatibility\n// This is a shorthand version of Utils.getGlobalObject (which we can't use here without creating a circular import)\nvar globalObject = global || (typeof window !== 'undefined' ? window : self);\nvar LogLevels;\n(function (LogLevels) {\n LogLevels[LogLevels[\"None\"] = 0] = \"None\";\n LogLevels[LogLevels[\"Error\"] = 1] = \"Error\";\n LogLevels[LogLevels[\"Major\"] = 2] = \"Major\";\n LogLevels[LogLevels[\"Minor\"] = 3] = \"Minor\";\n LogLevels[LogLevels[\"Micro\"] = 4] = \"Micro\";\n})(LogLevels || (LogLevels = {}));\nfunction pad(timeSegment, three) {\n return \"\".concat(timeSegment).padStart(three ? 3 : 2, '0');\n}\nfunction getHandler(logger) {\n return platform_1.default.Config.logTimestamps\n ? function (msg) {\n var time = new Date();\n logger(pad(time.getHours()) +\n ':' +\n pad(time.getMinutes()) +\n ':' +\n pad(time.getSeconds()) +\n '.' +\n pad(time.getMilliseconds(), 1) +\n ' ' +\n msg);\n }\n : logger;\n}\nvar getDefaultLoggers = function () {\n var _a, _b;\n var consoleLogger;\n var errorLogger;\n /* Can't just check for console && console.log; fails in IE <=9 */\n if ((typeof Window === 'undefined' && typeof WorkerGlobalScope === 'undefined') /* node */ ||\n typeof ((_b = (_a = globalObject === null || globalObject === void 0 ? void 0 : globalObject.console) === null || _a === void 0 ? void 0 : _a.log) === null || _b === void 0 ? void 0 : _b.apply) === 'function' /* sensible browsers */) {\n consoleLogger = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n console.log.apply(console, args);\n };\n errorLogger = console.warn\n ? function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n console.warn.apply(console, args);\n }\n : consoleLogger;\n }\n else if (globalObject === null || globalObject === void 0 ? void 0 : globalObject.console.log) {\n /* IE <= 9 with the console open -- console.log does not\n * inherit from Function, so has no apply method */\n consoleLogger = errorLogger = function () {\n Function.prototype.apply.call(console.log, console, arguments);\n };\n }\n else {\n /* IE <= 9 when dev tools are closed - window.console not even defined */\n consoleLogger = errorLogger = function () { };\n }\n return [consoleLogger, errorLogger].map(getHandler);\n};\nvar Logger = /** @class */ (function () {\n function Logger() {\n Logger.logLevel = Logger.LOG_DEFAULT;\n }\n Logger.initLogHandlers = function () {\n var _a = getDefaultLoggers(), logHandler = _a[0], logErrorHandler = _a[1];\n this.logHandler = logHandler;\n this.logErrorHandler = logErrorHandler;\n };\n Logger.renamedClientOption = function (oldName, newName) {\n Logger.deprecationWarning(\"The `\".concat(oldName, \"` client option has been renamed to `\").concat(newName, \"`. Please update your code to use `\").concat(newName, \"` instead. `\").concat(oldName, \"` will be removed in a future version.\"));\n };\n Logger.renamedMethod = function (className, oldName, newName) {\n Logger.deprecationWarning(\"`\".concat(className, \"`\\u2019s `\").concat(oldName, \"` method has been renamed to `\").concat(newName, \"`. Please update your code to use `\").concat(newName, \"` instead. `\").concat(oldName, \"` will be removed in a future version.\"));\n };\n Logger.deprecationWarning = function (message) {\n if (Logger.shouldLog(LogLevels.Error)) {\n Logger.logErrorHandler(\"Ably: Deprecation warning - \".concat(message));\n }\n };\n Logger.logLevel = LogLevels.Error; // default logLevel\n // public constants\n Logger.LOG_NONE = LogLevels.None;\n Logger.LOG_ERROR = LogLevels.Error;\n Logger.LOG_MAJOR = LogLevels.Major;\n Logger.LOG_MINOR = LogLevels.Minor;\n Logger.LOG_MICRO = LogLevels.Micro;\n // aliases\n Logger.LOG_DEFAULT = LogLevels.Error;\n Logger.LOG_DEBUG = LogLevels.Micro;\n /* public static functions */\n Logger.logAction = function (level, action, message) {\n if (Logger.shouldLog(level)) {\n (level === LogLevels.Error ? Logger.logErrorHandler : Logger.logHandler)('Ably: ' + action + ': ' + message);\n }\n };\n Logger.deprecated = function (description, msg) {\n Logger.deprecationWarning(\"\".concat(description, \" is deprecated and will be removed in a future version. \").concat(msg));\n };\n /* Where a logging operation is expensive, such as serialisation of data, use shouldLog will prevent\n the object being serialised if the log level will not output the message */\n Logger.shouldLog = function (level) {\n return level <= Logger.logLevel;\n };\n Logger.setLog = function (level, handler) {\n if (level !== undefined)\n Logger.logLevel = level;\n if (handler !== undefined)\n Logger.logHandler = Logger.logErrorHandler = handler;\n };\n return Logger;\n}());\nexports.default = Logger;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13)))\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Platform = /** @class */ (function () {\n function Platform() {\n }\n return Platform;\n}());\nexports.default = Platform;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PartialErrorInfo = void 0;\nvar tslib_1 = __webpack_require__(0);\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nfunction toString(err) {\n var result = '[' + err.constructor.name;\n if (err.message)\n result += ': ' + err.message;\n if (err.statusCode)\n result += '; statusCode=' + err.statusCode;\n if (err.code)\n result += '; code=' + err.code;\n if (err.cause)\n result += '; cause=' + Utils.inspectError(err.cause);\n if (err.href && !(err.message && err.message.indexOf('help.ably.io') > -1))\n result += '; see ' + err.href + ' ';\n result += ']';\n return result;\n}\nvar ErrorInfo = /** @class */ (function (_super) {\n tslib_1.__extends(ErrorInfo, _super);\n function ErrorInfo(message, code, statusCode, cause) {\n var _this = _super.call(this, message) || this;\n if (typeof Object.setPrototypeOf !== 'undefined') {\n Object.setPrototypeOf(_this, ErrorInfo.prototype);\n }\n _this.code = code;\n _this.statusCode = statusCode;\n _this.cause = cause;\n return _this;\n }\n ErrorInfo.prototype.toString = function () {\n return toString(this);\n };\n ErrorInfo.fromValues = function (values) {\n var _a = values, message = _a.message, code = _a.code, statusCode = _a.statusCode;\n if (typeof message !== 'string' || typeof code !== 'number' || typeof statusCode !== 'number') {\n throw new Error('ErrorInfo.fromValues(): invalid values: ' + platform_1.default.Config.inspect(values));\n }\n var result = Object.assign(new ErrorInfo(message, code, statusCode), values);\n if (result.code && !result.href) {\n result.href = 'https://help.ably.io/error/' + result.code;\n }\n return result;\n };\n return ErrorInfo;\n}(Error));\nexports.default = ErrorInfo;\nvar PartialErrorInfo = /** @class */ (function (_super) {\n tslib_1.__extends(PartialErrorInfo, _super);\n function PartialErrorInfo(message, code, statusCode, cause) {\n var _this = _super.call(this, message) || this;\n if (typeof Object.setPrototypeOf !== 'undefined') {\n Object.setPrototypeOf(_this, PartialErrorInfo.prototype);\n }\n _this.code = code;\n _this.statusCode = statusCode;\n _this.cause = cause;\n return _this;\n }\n PartialErrorInfo.prototype.toString = function () {\n return toString(this);\n };\n return PartialErrorInfo;\n}(Error));\nexports.PartialErrorInfo = PartialErrorInfo;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n;(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(6));\n\t}\n\telse {}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {;(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse {}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && \"function\" === 'function') {\n\t try {\n\t crypto = __webpack_require__(44);\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }())\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var i = 0; i < thatSigBytes; i += 4) {\n\t thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13)))\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\n/* Call the listener, catch any exceptions and log, but continue operation*/\nfunction callListener(eventThis, listener, args) {\n try {\n listener.apply(eventThis, args);\n }\n catch (e) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'EventEmitter.emit()', 'Unexpected listener exception: ' + e + '; stack = ' + (e && e.stack));\n }\n}\n/**\n * Remove listeners that match listener\n * @param targetListeners is an array of listener arrays or event objects with arrays of listeners\n * @param listener the listener callback to remove\n * @param eventFilter (optional) event name instructing the function to only remove listeners for the specified event\n */\nfunction removeListener(targetListeners, listener, eventFilter) {\n var listeners;\n var index;\n var eventName;\n for (var targetListenersIndex = 0; targetListenersIndex < targetListeners.length; targetListenersIndex++) {\n listeners = targetListeners[targetListenersIndex];\n if (eventFilter) {\n listeners = listeners[eventFilter];\n }\n if (Utils.isArray(listeners)) {\n while ((index = Utils.arrIndexOf(listeners, listener)) !== -1) {\n listeners.splice(index, 1);\n }\n /* If events object has an event name key with no listeners then\n remove the key to stop the list growing indefinitely */\n if (eventFilter && listeners.length === 0) {\n delete targetListeners[targetListenersIndex][eventFilter];\n }\n }\n else if (Utils.isObject(listeners)) {\n /* events */\n for (eventName in listeners) {\n if (Object.prototype.hasOwnProperty.call(listeners, eventName) && Utils.isArray(listeners[eventName])) {\n removeListener([listeners], listener, eventName);\n }\n }\n }\n }\n}\nvar EventEmitter = /** @class */ (function () {\n function EventEmitter() {\n this.any = [];\n this.events = Object.create(null);\n this.anyOnce = [];\n this.eventsOnce = Object.create(null);\n }\n EventEmitter.prototype.on = function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (args.length === 1) {\n var listener = args[0];\n if (typeof listener === 'function') {\n this.any.push(listener);\n }\n else {\n throw new Error('EventListener.on(): Invalid arguments: ' + platform_1.default.Config.inspect(args));\n }\n }\n if (args.length === 2) {\n var event_1 = args[0], listener_1 = args[1];\n if (typeof listener_1 !== 'function') {\n throw new Error('EventListener.on(): Invalid arguments: ' + platform_1.default.Config.inspect(args));\n }\n if (Utils.isEmptyArg(event_1)) {\n this.any.push(listener_1);\n }\n else if (Utils.isArray(event_1)) {\n event_1.forEach(function (eventName) {\n _this.on(eventName, listener_1);\n });\n }\n else {\n if (typeof event_1 !== 'string') {\n throw new Error('EventListener.on(): Invalid arguments: ' + platform_1.default.Config.inspect(args));\n }\n var listeners = this.events[event_1] || (this.events[event_1] = []);\n listeners.push(listener_1);\n }\n }\n };\n EventEmitter.prototype.off = function () {\n var _a;\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (args.length == 0 || (Utils.isEmptyArg(args[0]) && Utils.isEmptyArg(args[1]))) {\n this.any = [];\n this.events = Object.create(null);\n this.anyOnce = [];\n this.eventsOnce = Object.create(null);\n return;\n }\n var firstArg = args[0], secondArg = args[1];\n var listener = null;\n var event = null;\n if (args.length === 1 || !secondArg) {\n if (typeof firstArg === 'function') {\n /* we take this to be the listener and treat the event as \"any\" .. */\n listener = firstArg;\n }\n else {\n event = firstArg;\n }\n /* ... or we take event to be the actual event name and listener to be all */\n }\n else {\n if (typeof secondArg !== 'function') {\n throw new Error('EventEmitter.off(): invalid arguments:' + platform_1.default.Config.inspect(args));\n }\n _a = [firstArg, secondArg], event = _a[0], listener = _a[1];\n }\n if (listener && Utils.isEmptyArg(event)) {\n removeListener([this.any, this.events, this.anyOnce, this.eventsOnce], listener);\n return;\n }\n if (Utils.isArray(event)) {\n event.forEach(function (eventName) {\n _this.off(eventName, listener);\n });\n return;\n }\n /* \"normal\" case where event is an actual event */\n if (typeof event !== 'string') {\n throw new Error('EventEmitter.off(): invalid arguments:' + platform_1.default.Config.inspect(args));\n }\n if (listener) {\n removeListener([this.events, this.eventsOnce], listener, event);\n }\n else {\n delete this.events[event];\n delete this.eventsOnce[event];\n }\n };\n /**\n * Get the array of listeners for a given event; excludes once events\n * @param event (optional) the name of the event, or none for 'any'\n * @return array of events, or null if none\n */\n EventEmitter.prototype.listeners = function (event) {\n if (event) {\n var listeners = this.events[event] || [];\n if (this.eventsOnce[event])\n Array.prototype.push.apply(listeners, this.eventsOnce[event]);\n return listeners.length ? listeners : null;\n }\n return this.any.length ? this.any : null;\n };\n /**\n * Emit an event\n * @param event the event name\n * @param args the arguments to pass to the listener\n */\n EventEmitter.prototype.emit = function (event) {\n var args = []; /* , args... */\n for (var _i = 1 /* , args... */; _i < arguments.length /* , args... */; _i++ /* , args... */) {\n args[_i - 1] = arguments[_i]; /* , args... */\n }\n var eventThis = { event: event };\n var listeners = [];\n if (this.anyOnce.length) {\n Array.prototype.push.apply(listeners, this.anyOnce);\n this.anyOnce = [];\n }\n if (this.any.length) {\n Array.prototype.push.apply(listeners, this.any);\n }\n var eventsOnceListeners = this.eventsOnce[event];\n if (eventsOnceListeners) {\n Array.prototype.push.apply(listeners, eventsOnceListeners);\n delete this.eventsOnce[event];\n }\n var eventsListeners = this.events[event];\n if (eventsListeners) {\n Array.prototype.push.apply(listeners, eventsListeners);\n }\n Utils.arrForEach(listeners, function (listener) {\n callListener(eventThis, listener, args);\n });\n };\n EventEmitter.prototype.once = function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var argCount = args.length;\n if ((argCount === 0 || (argCount === 1 && typeof args[0] !== 'function')) && platform_1.default.Config.Promise) {\n var event_2 = args[0];\n return new platform_1.default.Config.Promise(function (resolve) {\n _this.once(event_2, resolve);\n });\n }\n var firstArg = args[0], secondArg = args[1];\n if (args.length === 1 && typeof firstArg === 'function') {\n this.anyOnce.push(firstArg);\n }\n else if (Utils.isEmptyArg(firstArg)) {\n if (typeof secondArg !== 'function') {\n throw new Error('EventEmitter.once(): Invalid arguments:' + platform_1.default.Config.inspect(args));\n }\n this.anyOnce.push(secondArg);\n }\n else if (Utils.isArray(firstArg)) {\n var self_1 = this;\n var listenerWrapper_1 = function () {\n var innerArgs = Array.prototype.slice.call(arguments);\n Utils.arrForEach(firstArg, function (eventName) {\n self_1.off(eventName, listenerWrapper_1);\n });\n if (typeof secondArg !== 'function') {\n throw new Error('EventEmitter.once(): Invalid arguments:' + platform_1.default.Config.inspect(args));\n }\n secondArg.apply(this, innerArgs);\n };\n Utils.arrForEach(firstArg, function (eventName) {\n self_1.on(eventName, listenerWrapper_1);\n });\n }\n else {\n if (typeof firstArg !== 'string') {\n throw new Error('EventEmitter.once(): Invalid arguments:' + platform_1.default.Config.inspect(args));\n }\n var listeners = this.eventsOnce[firstArg] || (this.eventsOnce[firstArg] = []);\n if (secondArg) {\n if (typeof secondArg !== 'function') {\n throw new Error('EventEmitter.once(): Invalid arguments:' + platform_1.default.Config.inspect(args));\n }\n listeners.push(secondArg);\n }\n }\n };\n /**\n * Private API\n *\n * Listen for a single occurrence of a state event and fire immediately if currentState matches targetState\n * @param targetState the name of the state event to listen to\n * @param currentState the name of the current state of this object\n * @param listener the listener to be called\n * @param listenerArgs\n */\n EventEmitter.prototype.whenState = function (targetState, currentState, listener) {\n var _this = this;\n var listenerArgs = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n listenerArgs[_i - 3] = arguments[_i];\n }\n var eventThis = { event: targetState };\n if (typeof targetState !== 'string' || typeof currentState !== 'string') {\n throw 'whenState requires a valid event String argument';\n }\n if (typeof listener !== 'function' && platform_1.default.Config.Promise) {\n return new platform_1.default.Config.Promise(function (resolve) {\n EventEmitter.prototype.whenState.apply(_this, [targetState, currentState, resolve].concat(listenerArgs));\n });\n }\n if (targetState === currentState) {\n callListener(eventThis, listener, listenerArgs);\n }\n else {\n this.once(targetState, listener);\n }\n };\n return EventEmitter;\n}());\nexports.default = EventEmitter;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDefaults = exports.normaliseOptions = exports.objectifyOptions = exports.getAgentString = exports.getHosts = exports.getFallbackHosts = exports.environmentFallbackHosts = exports.getHttpScheme = exports.getPort = exports.getHost = void 0;\nvar tslib_1 = __webpack_require__(0);\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar errorinfo_1 = tslib_1.__importDefault(__webpack_require__(4));\nvar package_json_1 = __webpack_require__(43);\nvar agent = 'ably-js/' + package_json_1.version;\nvar Defaults = {\n ENVIRONMENT: '',\n REST_HOST: 'rest.ably.io',\n REALTIME_HOST: 'realtime.ably.io',\n FALLBACK_HOSTS: [\n 'A.ably-realtime.com',\n 'B.ably-realtime.com',\n 'C.ably-realtime.com',\n 'D.ably-realtime.com',\n 'E.ably-realtime.com',\n ],\n PORT: 80,\n TLS_PORT: 443,\n TIMEOUTS: {\n /* Documented as options params: */\n disconnectedRetryTimeout: 15000,\n suspendedRetryTimeout: 30000,\n /* Undocumented, but part of the api and can be used by customers: */\n httpRequestTimeout: 15000,\n channelRetryTimeout: 15000,\n fallbackRetryTimeout: 600000,\n /* For internal / test use only: */\n connectionStateTtl: 120000,\n realtimeRequestTimeout: 10000,\n recvTimeout: 90000,\n preferenceConnectTimeout: 6000,\n parallelUpgradeDelay: 6000,\n },\n httpMaxRetryCount: 3,\n maxMessageSize: 65536,\n version: package_json_1.version,\n protocolVersion: 2,\n agent: agent,\n getHost: getHost,\n getPort: getPort,\n getHttpScheme: getHttpScheme,\n environmentFallbackHosts: environmentFallbackHosts,\n getFallbackHosts: getFallbackHosts,\n getHosts: getHosts,\n checkHost: checkHost,\n objectifyOptions: objectifyOptions,\n normaliseOptions: normaliseOptions,\n};\nfunction getHost(options, host, ws) {\n if (ws)\n host = (host == options.restHost && options.realtimeHost) || host || options.realtimeHost;\n else\n host = host || options.restHost;\n return host;\n}\nexports.getHost = getHost;\nfunction getPort(options, tls) {\n return tls || options.tls ? options.tlsPort : options.port;\n}\nexports.getPort = getPort;\nfunction getHttpScheme(options) {\n return options.tls ? 'https://' : 'http://';\n}\nexports.getHttpScheme = getHttpScheme;\n// construct environment fallback hosts as per RSC15i\nfunction environmentFallbackHosts(environment) {\n return [\n environment + '-a-fallback.ably-realtime.com',\n environment + '-b-fallback.ably-realtime.com',\n environment + '-c-fallback.ably-realtime.com',\n environment + '-d-fallback.ably-realtime.com',\n environment + '-e-fallback.ably-realtime.com',\n ];\n}\nexports.environmentFallbackHosts = environmentFallbackHosts;\nfunction getFallbackHosts(options) {\n var fallbackHosts = options.fallbackHosts, httpMaxRetryCount = typeof options.httpMaxRetryCount !== 'undefined' ? options.httpMaxRetryCount : Defaults.httpMaxRetryCount;\n return fallbackHosts ? Utils.arrChooseN(fallbackHosts, httpMaxRetryCount) : [];\n}\nexports.getFallbackHosts = getFallbackHosts;\nfunction getHosts(options) {\n return [options.restHost].concat(getFallbackHosts(options));\n}\nexports.getHosts = getHosts;\nfunction checkHost(host) {\n if (typeof host !== 'string') {\n throw new errorinfo_1.default('host must be a string; was a ' + typeof host, 40000, 400);\n }\n if (!host.length) {\n throw new errorinfo_1.default('host must not be zero-length', 40000, 400);\n }\n}\nfunction getRealtimeHost(options, production, environment) {\n if (options.realtimeHost)\n return options.realtimeHost;\n /* prefer setting realtimeHost to restHost as a custom restHost typically indicates\n * a development environment is being used that can't be inferred by the library */\n if (options.restHost) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Defaults.normaliseOptions', 'restHost is set to \"' +\n options.restHost +\n '\" but realtimeHost is not set, so setting realtimeHost to \"' +\n options.restHost +\n '\" too. If this is not what you want, please set realtimeHost explicitly.');\n return options.restHost;\n }\n return production ? Defaults.REALTIME_HOST : environment + '-' + Defaults.REALTIME_HOST;\n}\nfunction getTimeouts(options) {\n /* Allow values passed in options to override default timeouts */\n var timeouts = {};\n for (var prop in Defaults.TIMEOUTS) {\n timeouts[prop] = options[prop] || Defaults.TIMEOUTS[prop];\n }\n return timeouts;\n}\nfunction getAgentString(options) {\n var agentStr = Defaults.agent;\n if (options.agents) {\n for (var agent in options.agents) {\n agentStr += ' ' + agent + '/' + options.agents[agent];\n }\n }\n return agentStr;\n}\nexports.getAgentString = getAgentString;\nfunction objectifyOptions(options) {\n if (typeof options == 'string') {\n return options.indexOf(':') == -1 ? { token: options } : { key: options };\n }\n return options;\n}\nexports.objectifyOptions = objectifyOptions;\nfunction normaliseOptions(options) {\n /* Deprecated options */\n if (options.host) {\n logger_1.default.renamedClientOption('host', 'restHost');\n options.restHost = options.host;\n }\n if (options.wsHost) {\n logger_1.default.renamedClientOption('wsHost', 'realtimeHost');\n options.realtimeHost = options.wsHost;\n }\n if (options.queueEvents) {\n logger_1.default.renamedClientOption('queueEvents', 'queueMessages');\n options.queueMessages = options.queueEvents;\n }\n if (options.headers) {\n logger_1.default.deprecated('the `headers` client option', '' /* there is no replacement; see DeprecatedClientOptions.headers */);\n }\n if (options.fallbackHostsUseDefault) {\n /* fallbackHostsUseDefault and fallbackHosts are mutually exclusive as per TO3k7 */\n if (options.fallbackHosts) {\n var msg = 'fallbackHosts and fallbackHostsUseDefault cannot both be set';\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Defaults.normaliseOptions', msg);\n throw new errorinfo_1.default(msg, 40000, 400);\n }\n /* default fallbacks can't be used with custom ports */\n if (options.port || options.tlsPort) {\n var msg = 'fallbackHostsUseDefault cannot be set when port or tlsPort are set';\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Defaults.normaliseOptions', msg);\n throw new errorinfo_1.default(msg, 40000, 400);\n }\n /* emit an appropriate deprecation warning */\n if (options.environment) {\n logger_1.default.deprecated('The `fallbackHostsUseDefault` client option', 'If you’re using this client option to force the library to make use of fallback hosts even though you’ve set the `environment` client option, then this is no longer necessary: remove your usage of the `fallbackHostsUseDefault` client option and the library will then automatically choose the correct fallback hosts to use for the specified environment.');\n }\n else {\n logger_1.default.deprecated('The `fallbackHostsUseDefault` client option', 'If you’re using this client option to force the library to make use of fallback hosts even though you’re not using the primary Ably environment, then stop using `fallbackHostsUseDefault`, and update your code to either pass the `environment` client option (in which case the library will automatically choose the correct fallback hosts to use for the specified environment), or to pass the `fallbackHosts` client option to specify a custom list of fallback hosts to use (for example, if you’re using a custom CNAME, in which case Ably will have provided you with an explicit list of fallback hosts).');\n }\n /* use the default fallback hosts as requested */\n options.fallbackHosts = Defaults.FALLBACK_HOSTS;\n }\n /* options.recover as a boolean is deprecated, and therefore is not part of the public typing */\n if (options.recover === true) {\n logger_1.default.deprecated('The ability to use a boolean value for the `recover` client option', 'If you wish for the connection to always be recovered, replace `{ recover: true }` with a function that always passes `true` to its callback: `{ recover: function(lastConnectionDetails, cb) { cb(true); } }`');\n options.recover = function (lastConnectionDetails, cb) {\n cb(true);\n };\n }\n if (typeof options.recover === 'function' && options.closeOnUnload === true) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Defaults.normaliseOptions', 'closeOnUnload was true and a session recovery function was set - these are mutually exclusive, so unsetting the latter');\n options.recover = undefined;\n }\n if (!('closeOnUnload' in options)) {\n /* Have closeOnUnload default to true unless we have any indication that\n * the user may want to recover the connection */\n options.closeOnUnload = !options.recover;\n }\n if (options.transports && Utils.arrIn(options.transports, 'xhr')) {\n logger_1.default.deprecationWarning('The \"xhr\" transport has been renamed to \"xhr_streaming\". Please update your client options code to use `transports: [\"xhr_streaming\"]` instead. The ability to use `transports: [\"xhr\"]` will be removed in a future version.');\n Utils.arrDeleteValue(options.transports, 'xhr');\n options.transports.push('xhr_streaming');\n }\n if (!('queueMessages' in options))\n options.queueMessages = true;\n /* infer hosts and fallbacks based on the configured environment */\n var environment = (options.environment && String(options.environment).toLowerCase()) || Defaults.ENVIRONMENT;\n var production = !environment || environment === 'production';\n if (!options.fallbackHosts && !options.restHost && !options.realtimeHost && !options.port && !options.tlsPort) {\n options.fallbackHosts = production ? Defaults.FALLBACK_HOSTS : environmentFallbackHosts(environment);\n }\n var restHost = options.restHost || (production ? Defaults.REST_HOST : environment + '-' + Defaults.REST_HOST);\n var realtimeHost = getRealtimeHost(options, production, environment);\n Utils.arrForEach((options.fallbackHosts || []).concat(restHost, realtimeHost), checkHost);\n options.port = options.port || Defaults.PORT;\n options.tlsPort = options.tlsPort || Defaults.TLS_PORT;\n if (!('tls' in options))\n options.tls = true;\n var timeouts = getTimeouts(options);\n if ('useBinaryProtocol' in options) {\n options.useBinaryProtocol = platform_1.default.Config.supportsBinary && options.useBinaryProtocol;\n }\n else {\n options.useBinaryProtocol = platform_1.default.Config.preferBinary;\n }\n if (options.clientId) {\n var headers = (options.headers = options.headers || {});\n headers['X-Ably-ClientId'] = platform_1.default.BufferUtils.base64Encode(platform_1.default.BufferUtils.utf8Encode(options.clientId));\n }\n if (!('idempotentRestPublishing' in options)) {\n options.idempotentRestPublishing = true;\n }\n if (options.promises && !platform_1.default.Config.Promise) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Defaults.normaliseOptions', '{promises: true} was specified, but no Promise constructor found; disabling promises');\n options.promises = false;\n }\n var connectivityCheckParams = null;\n var connectivityCheckUrl = options.connectivityCheckUrl;\n if (options.connectivityCheckUrl) {\n var _a = options.connectivityCheckUrl.split('?'), uri = _a[0], qs = _a[1];\n connectivityCheckParams = qs ? Utils.parseQueryString(qs) : {};\n if (uri.indexOf('://') === -1) {\n uri = 'https://' + uri;\n }\n connectivityCheckUrl = uri;\n }\n return tslib_1.__assign(tslib_1.__assign({}, options), { useBinaryProtocol: 'useBinaryProtocol' in options\n ? platform_1.default.Config.supportsBinary && options.useBinaryProtocol\n : platform_1.default.Config.preferBinary, realtimeHost: realtimeHost, restHost: restHost, maxMessageSize: options.maxMessageSize || Defaults.maxMessageSize, timeouts: timeouts, connectivityCheckParams: connectivityCheckParams, connectivityCheckUrl: connectivityCheckUrl });\n}\nexports.normaliseOptions = normaliseOptions;\nexports.default = Defaults;\nfunction getDefaults(platformDefaults) {\n return Object.assign(Defaults, platformDefaults);\n}\nexports.getDefaults = getDefaults;\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar errorinfo_1 = tslib_1.__importDefault(__webpack_require__(4));\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nfunction normaliseContext(context) {\n if (!context || !context.channelOptions) {\n return {\n channelOptions: context,\n plugins: {},\n baseEncodedPreviousPayload: undefined,\n };\n }\n return context;\n}\nfunction normalizeCipherOptions(options) {\n if (options && options.cipher) {\n if (!platform_1.default.Crypto)\n throw new Error('Encryption not enabled; use ably.encryption.js instead');\n var cipher = platform_1.default.Crypto.getCipher(options.cipher);\n return {\n cipher: cipher.cipherParams,\n channelCipher: cipher.cipher,\n };\n }\n return options !== null && options !== void 0 ? options : {};\n}\nfunction getMessageSize(msg) {\n var size = 0;\n if (msg.name) {\n size += msg.name.length;\n }\n if (msg.clientId) {\n size += msg.clientId.length;\n }\n if (msg.extras) {\n size += JSON.stringify(msg.extras).length;\n }\n if (msg.data) {\n size += Utils.dataSizeBytes(msg.data);\n }\n return size;\n}\nvar Message = /** @class */ (function () {\n function Message() {\n }\n /**\n * Overload toJSON() to intercept JSON.stringify()\n * @return {*}\n */\n Message.prototype.toJSON = function () {\n /* encode data to base64 if present and we're returning real JSON;\n * although msgpack calls toJSON(), we know it is a stringify()\n * call if it has a non-empty arguments list */\n var encoding = this.encoding;\n var data = this.data;\n if (data && platform_1.default.BufferUtils.isBuffer(data)) {\n if (arguments.length > 0) {\n /* stringify call */\n encoding = encoding ? encoding + '/base64' : 'base64';\n data = platform_1.default.BufferUtils.base64Encode(data);\n }\n else {\n /* Called by msgpack. toBuffer returns a datatype understandable by\n * that platform's msgpack implementation (Buffer in node, Uint8Array\n * in browsers) */\n data = platform_1.default.BufferUtils.toBuffer(data);\n }\n }\n return {\n name: this.name,\n id: this.id,\n clientId: this.clientId,\n connectionId: this.connectionId,\n connectionKey: this.connectionKey,\n extras: this.extras,\n encoding: encoding,\n data: data,\n };\n };\n Message.prototype.toString = function () {\n var result = '[Message';\n if (this.name)\n result += '; name=' + this.name;\n if (this.id)\n result += '; id=' + this.id;\n if (this.timestamp)\n result += '; timestamp=' + this.timestamp;\n if (this.clientId)\n result += '; clientId=' + this.clientId;\n if (this.connectionId)\n result += '; connectionId=' + this.connectionId;\n if (this.encoding)\n result += '; encoding=' + this.encoding;\n if (this.extras)\n result += '; extras =' + JSON.stringify(this.extras);\n if (this.data) {\n if (typeof this.data == 'string')\n result += '; data=' + this.data;\n else if (platform_1.default.BufferUtils.isBuffer(this.data))\n result += '; data (buffer)=' + platform_1.default.BufferUtils.base64Encode(this.data);\n else\n result += '; data (json)=' + JSON.stringify(this.data);\n }\n if (this.extras)\n result += '; extras=' + JSON.stringify(this.extras);\n result += ']';\n return result;\n };\n Message.encrypt = function (msg, options, callback) {\n var data = msg.data, encoding = msg.encoding, cipher = options.channelCipher;\n encoding = encoding ? encoding + '/' : '';\n if (!platform_1.default.BufferUtils.isBuffer(data)) {\n data = platform_1.default.BufferUtils.utf8Encode(String(data));\n encoding = encoding + 'utf-8/';\n }\n cipher.encrypt(data, function (err, data) {\n if (err) {\n callback(err);\n return;\n }\n msg.data = data;\n msg.encoding = encoding + 'cipher+' + cipher.algorithm;\n callback(null, msg);\n });\n };\n Message.encode = function (msg, options, callback) {\n var data = msg.data;\n var nativeDataType = typeof data == 'string' || platform_1.default.BufferUtils.isBuffer(data) || data === null || data === undefined;\n if (!nativeDataType) {\n if (Utils.isObject(data) || Utils.isArray(data)) {\n msg.data = JSON.stringify(data);\n msg.encoding = msg.encoding ? msg.encoding + '/json' : 'json';\n }\n else {\n throw new errorinfo_1.default('Data type is unsupported', 40013, 400);\n }\n }\n if (options != null && options.cipher) {\n Message.encrypt(msg, options, callback);\n }\n else {\n callback(null, msg);\n }\n };\n Message.encodeArray = function (messages, options, callback) {\n var processed = 0;\n for (var i = 0; i < messages.length; i++) {\n Message.encode(messages[i], options, function (err) {\n if (err) {\n callback(err);\n return;\n }\n processed++;\n if (processed == messages.length) {\n callback(null, messages);\n }\n });\n }\n };\n Message.decode = function (message, inputContext) {\n var context = normaliseContext(inputContext);\n var lastPayload = message.data;\n var encoding = message.encoding;\n if (encoding) {\n var xforms = encoding.split('/');\n var lastProcessedEncodingIndex = void 0, encodingsToProcess = xforms.length, data = message.data;\n var xform = '';\n try {\n while ((lastProcessedEncodingIndex = encodingsToProcess) > 0) {\n // eslint-disable-next-line security/detect-unsafe-regex\n var match = xforms[--encodingsToProcess].match(/([-\\w]+)(\\+([\\w-]+))?/);\n if (!match)\n break;\n xform = match[1];\n switch (xform) {\n case 'base64':\n data = platform_1.default.BufferUtils.base64Decode(String(data));\n if (lastProcessedEncodingIndex == xforms.length) {\n lastPayload = data;\n }\n continue;\n case 'utf-8':\n data = platform_1.default.BufferUtils.utf8Decode(data);\n continue;\n case 'json':\n data = JSON.parse(data);\n continue;\n case 'cipher':\n if (context.channelOptions != null &&\n context.channelOptions.cipher &&\n context.channelOptions.channelCipher) {\n var xformAlgorithm = match[3], cipher = context.channelOptions.channelCipher;\n /* don't attempt to decrypt unless the cipher params are compatible */\n if (xformAlgorithm != cipher.algorithm) {\n throw new Error('Unable to decrypt message with given cipher; incompatible cipher params');\n }\n data = cipher.decrypt(data);\n continue;\n }\n else {\n throw new Error('Unable to decrypt message; not an encrypted channel');\n }\n case 'vcdiff':\n if (!context.plugins || !context.plugins.vcdiff) {\n throw new errorinfo_1.default('Missing Vcdiff decoder (https://github.com/ably-forks/vcdiff-decoder)', 40019, 400);\n }\n if (typeof Uint8Array === 'undefined') {\n throw new errorinfo_1.default('Delta decoding not supported on this browser (need ArrayBuffer & Uint8Array)', 40020, 400);\n }\n try {\n var deltaBase = context.baseEncodedPreviousPayload;\n if (typeof deltaBase === 'string') {\n deltaBase = platform_1.default.BufferUtils.utf8Encode(deltaBase);\n }\n /* vcdiff expects Uint8Arrays, can't copy with ArrayBuffers. (also, if we\n * don't have a TextDecoder, deltaBase might be a WordArray here, so need\n * to process it into a buffer anyway) */\n deltaBase = platform_1.default.BufferUtils.toBuffer(deltaBase);\n data = platform_1.default.BufferUtils.toBuffer(data);\n data = platform_1.default.BufferUtils.typedArrayToBuffer(context.plugins.vcdiff.decode(data, deltaBase));\n lastPayload = data;\n }\n catch (e) {\n throw new errorinfo_1.default('Vcdiff delta decode failed with ' + e, 40018, 400);\n }\n continue;\n default:\n throw new Error('Unknown encoding');\n }\n }\n }\n catch (e) {\n var err = e;\n throw new errorinfo_1.default('Error processing the ' + xform + ' encoding, decoder returned ‘' + err.message + '’', err.code || 40013, 400);\n }\n finally {\n message.encoding =\n lastProcessedEncodingIndex <= 0 ? null : xforms.slice(0, lastProcessedEncodingIndex).join('/');\n message.data = data;\n }\n }\n context.baseEncodedPreviousPayload = lastPayload;\n };\n Message.fromResponseBody = function (body, options, format) {\n if (format) {\n body = Utils.decodeBody(body, format);\n }\n for (var i = 0; i < body.length; i++) {\n var msg = (body[i] = Message.fromValues(body[i]));\n try {\n Message.decode(msg, options);\n }\n catch (e) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Message.fromResponseBody()', e.toString());\n }\n }\n return body;\n };\n Message.fromValues = function (values) {\n return Object.assign(new Message(), values);\n };\n Message.fromValuesArray = function (values) {\n var count = values.length, result = new Array(count);\n for (var i = 0; i < count; i++)\n result[i] = Message.fromValues(values[i]);\n return result;\n };\n Message.fromEncoded = function (encoded, inputOptions) {\n var msg = Message.fromValues(encoded);\n var options = normalizeCipherOptions(inputOptions !== null && inputOptions !== void 0 ? inputOptions : null);\n /* if decoding fails at any point, catch and return the message decoded to\n * the fullest extent possible */\n try {\n Message.decode(msg, options);\n }\n catch (e) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Message.fromEncoded()', e.toString());\n }\n return msg;\n };\n Message.fromEncodedArray = function (encodedArray, options) {\n return encodedArray.map(function (encoded) {\n return Message.fromEncoded(encoded, options);\n });\n };\n /* This should be called on encode()d (and encrypt()d) Messages (as it\n * assumes the data is a string or buffer) */\n Message.getMessagesSize = function (messages) {\n var msg, total = 0;\n for (var i = 0; i < messages.length; i++) {\n msg = messages[i];\n total += msg.size || (msg.size = getMessageSize(msg));\n }\n return total;\n };\n Message.serialize = Utils.encodeBody;\n return Message;\n}());\nexports.default = Message;\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar errorinfo_1 = tslib_1.__importDefault(__webpack_require__(4));\nvar message_1 = tslib_1.__importDefault(__webpack_require__(9));\nvar presencemessage_1 = tslib_1.__importDefault(__webpack_require__(16));\nvar actions = {\n HEARTBEAT: 0,\n ACK: 1,\n NACK: 2,\n CONNECT: 3,\n CONNECTED: 4,\n DISCONNECT: 5,\n DISCONNECTED: 6,\n CLOSE: 7,\n CLOSED: 8,\n ERROR: 9,\n ATTACH: 10,\n ATTACHED: 11,\n DETACH: 12,\n DETACHED: 13,\n PRESENCE: 14,\n MESSAGE: 15,\n SYNC: 16,\n AUTH: 17,\n ACTIVATE: 18,\n};\nvar ActionName = [];\nObject.keys(actions).forEach(function (name) {\n ActionName[actions[name]] = name;\n});\nvar flags = {\n /* Channel attach state flags */\n HAS_PRESENCE: 1 << 0,\n HAS_BACKLOG: 1 << 1,\n RESUMED: 1 << 2,\n TRANSIENT: 1 << 4,\n ATTACH_RESUME: 1 << 5,\n /* Channel mode flags */\n PRESENCE: 1 << 16,\n PUBLISH: 1 << 17,\n SUBSCRIBE: 1 << 18,\n PRESENCE_SUBSCRIBE: 1 << 19,\n};\nvar flagNames = Object.keys(flags);\nflags.MODE_ALL = flags.PRESENCE | flags.PUBLISH | flags.SUBSCRIBE | flags.PRESENCE_SUBSCRIBE;\nfunction toStringArray(array) {\n var result = [];\n if (array) {\n for (var i = 0; i < array.length; i++) {\n result.push(array[i].toString());\n }\n }\n return '[ ' + result.join(', ') + ' ]';\n}\nvar simpleAttributes = 'id channel channelSerial connectionId count msgSerial timestamp'.split(' ');\nvar ProtocolMessage = /** @class */ (function () {\n function ProtocolMessage() {\n var _this = this;\n this.hasFlag = function (flag) {\n return (_this.flags & flags[flag]) > 0;\n };\n }\n ProtocolMessage.prototype.setFlag = function (flag) {\n return (this.flags = this.flags | flags[flag]);\n };\n ProtocolMessage.prototype.getMode = function () {\n return this.flags && this.flags & flags.MODE_ALL;\n };\n ProtocolMessage.prototype.encodeModesToFlags = function (modes) {\n var _this = this;\n modes.forEach(function (mode) { return _this.setFlag(mode); });\n };\n ProtocolMessage.prototype.decodeModesFromFlags = function () {\n var _this = this;\n var modes = [];\n ProtocolMessage.channelModes.forEach(function (mode) {\n if (_this.hasFlag(mode)) {\n modes.push(mode);\n }\n });\n return modes.length > 0 ? modes : undefined;\n };\n ProtocolMessage.fromValues = function (values) {\n return Object.assign(new ProtocolMessage(), values);\n };\n ProtocolMessage.Action = actions;\n ProtocolMessage.channelModes = ['PRESENCE', 'PUBLISH', 'SUBSCRIBE', 'PRESENCE_SUBSCRIBE'];\n ProtocolMessage.ActionName = ActionName;\n ProtocolMessage.serialize = Utils.encodeBody;\n ProtocolMessage.deserialize = function (serialized, format) {\n var deserialized = Utils.decodeBody(serialized, format);\n return ProtocolMessage.fromDeserialized(deserialized);\n };\n ProtocolMessage.fromDeserialized = function (deserialized) {\n var error = deserialized.error;\n if (error)\n deserialized.error = errorinfo_1.default.fromValues(error);\n var messages = deserialized.messages;\n if (messages)\n for (var i = 0; i < messages.length; i++)\n messages[i] = message_1.default.fromValues(messages[i]);\n var presence = deserialized.presence;\n if (presence)\n for (var i = 0; i < presence.length; i++)\n presence[i] = presencemessage_1.default.fromValues(presence[i], true);\n return Object.assign(new ProtocolMessage(), deserialized);\n };\n ProtocolMessage.stringify = function (msg) {\n var result = '[ProtocolMessage';\n if (msg.action !== undefined)\n result += '; action=' + ProtocolMessage.ActionName[msg.action] || false;\n var attribute;\n for (var attribIndex = 0; attribIndex < simpleAttributes.length; attribIndex++) {\n attribute = simpleAttributes[attribIndex];\n if (msg[attribute] !== undefined)\n result += '; ' + attribute + '=' + msg[attribute];\n }\n if (msg.messages)\n result += '; messages=' + toStringArray(message_1.default.fromValuesArray(msg.messages));\n if (msg.presence)\n result += '; presence=' + toStringArray(presencemessage_1.default.fromValuesArray(msg.presence));\n if (msg.error)\n result += '; error=' + errorinfo_1.default.fromValues(msg.error).toString();\n if (msg.auth && msg.auth.accessToken)\n result += '; token=' + msg.auth.accessToken;\n if (msg.flags)\n result += '; flags=' + flagNames.filter(msg.hasFlag).join(',');\n if (msg.params) {\n var stringifiedParams_1 = '';\n Utils.forInOwnNonNullProperties(msg.params, function (prop) {\n if (stringifiedParams_1.length > 0) {\n stringifiedParams_1 += '; ';\n }\n stringifiedParams_1 += prop + '=' + msg.params[prop];\n });\n if (stringifiedParams_1.length > 0) {\n result += '; params=[' + stringifiedParams_1 + ']';\n }\n }\n result += ']';\n return result;\n };\n return ProtocolMessage;\n}());\nexports.default = ProtocolMessage;\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n;(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(6));\n\t}\n\telse {}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t }\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar protocolmessage_1 = tslib_1.__importDefault(__webpack_require__(10));\nvar transport_1 = tslib_1.__importDefault(__webpack_require__(26));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar defaults_1 = tslib_1.__importDefault(__webpack_require__(8));\nvar connectionerrors_1 = tslib_1.__importDefault(__webpack_require__(21));\nvar auth_1 = tslib_1.__importDefault(__webpack_require__(18));\nvar errorinfo_1 = tslib_1.__importDefault(__webpack_require__(4));\nvar XHRStates_1 = tslib_1.__importDefault(__webpack_require__(22));\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\n/* TODO: can remove once realtime sends protocol message responses for comet errors */\nfunction shouldBeErrorAction(err) {\n var UNRESOLVABLE_ERROR_CODES = [80015, 80017, 80030];\n if (err.code) {\n if (auth_1.default.isTokenErr(err))\n return false;\n if (Utils.arrIn(UNRESOLVABLE_ERROR_CODES, err.code))\n return true;\n return err.code >= 40000 && err.code < 50000;\n }\n else {\n /* Likely a network or transport error of some kind. Certainly not fatal to the connection */\n return false;\n }\n}\nfunction protocolMessageFromRawError(err) {\n /* err will be either a legacy (non-protocolmessage) comet error response\n * (which will have an err.code), or a xhr/network error (which won't). */\n if (shouldBeErrorAction(err)) {\n return [protocolmessage_1.default.fromValues({ action: protocolmessage_1.default.Action.ERROR, error: err })];\n }\n else {\n return [protocolmessage_1.default.fromValues({ action: protocolmessage_1.default.Action.DISCONNECTED, error: err })];\n }\n}\n/*\n * A base comet transport class\n */\nvar CometTransport = /** @class */ (function (_super) {\n tslib_1.__extends(CometTransport, _super);\n function CometTransport(connectionManager, auth, params) {\n var _this = _super.call(this, connectionManager, auth, params, /* binary not supported for comet so force JSON protocol */ true) || this;\n /* For comet, we could do the auth update by aborting the current recv and\n * starting a new one with the new token, that'd be sufficient for realtime.\n * Problem is JSONP - you can't cancel truly abort a recv once started. So\n * we need to send an AUTH for jsonp. In which case it's simpler to keep all\n * comet transports the same and do it for all of them. So we send the AUTH\n * instead, and don't need to abort the recv */\n _this.onAuthUpdated = function (tokenDetails) {\n _this.authParams = { access_token: tokenDetails.token };\n };\n _this.stream = 'stream' in params ? params.stream : true;\n _this.sendRequest = null;\n _this.recvRequest = null;\n _this.pendingCallback = null;\n _this.pendingItems = null;\n return _this;\n }\n CometTransport.prototype.connect = function () {\n var _this = this;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'CometTransport.connect()', 'starting');\n transport_1.default.prototype.connect.call(this);\n var params = this.params;\n var options = params.options;\n var host = defaults_1.default.getHost(options, params.host);\n var port = defaults_1.default.getPort(options);\n var cometScheme = options.tls ? 'https://' : 'http://';\n this.baseUri = cometScheme + host + ':' + port + '/comet/';\n var connectUri = this.baseUri + 'connect';\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'CometTransport.connect()', 'uri: ' + connectUri);\n this.auth.getAuthParams(function (err, authParams) {\n if (err) {\n _this.disconnect(err);\n return;\n }\n if (_this.isDisposed) {\n return;\n }\n _this.authParams = authParams;\n var connectParams = _this.params.getConnectParams(authParams);\n if ('stream' in connectParams)\n _this.stream = connectParams.stream;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'CometTransport.connect()', 'connectParams:' + Utils.toQueryString(connectParams));\n /* this will be the 'recvRequest' so this connection can stream messages */\n var preconnected = false;\n var connectRequest = (_this.recvRequest = _this.createRequest(connectUri, null, connectParams, null, _this.stream ? XHRStates_1.default.REQ_RECV_STREAM : XHRStates_1.default.REQ_RECV));\n connectRequest.on('data', function (data) {\n if (!_this.recvRequest) {\n /* the transport was disposed before we connected */\n return;\n }\n if (!preconnected) {\n preconnected = true;\n _this.emit('preconnect');\n }\n _this.onData(data);\n });\n connectRequest.on('complete', function (err) {\n if (!_this.recvRequest) {\n /* the transport was disposed before we connected */\n err = err || new errorinfo_1.default('Request cancelled', 80003, 400);\n }\n _this.recvRequest = null;\n /* Connect request may complete without a emitting 'data' event since that is not\n * emitted for e.g. a non-streamed error response. Still implies preconnect. */\n if (!preconnected && !err) {\n preconnected = true;\n _this.emit('preconnect');\n }\n _this.onActivity();\n if (err) {\n if (err.code) {\n /* A protocol error received from realtime. TODO: once realtime\n * consistendly sends errors wrapped in protocol messages, should be\n * able to remove this */\n _this.onData(protocolMessageFromRawError(err));\n }\n else {\n /* A network/xhr error. Don't bother wrapping in a protocol message,\n * just disconnect the transport */\n _this.disconnect(err);\n }\n return;\n }\n platform_1.default.Config.nextTick(function () {\n _this.recv();\n });\n });\n connectRequest.exec();\n });\n };\n CometTransport.prototype.requestClose = function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'CometTransport.requestClose()');\n this._requestCloseOrDisconnect(true);\n };\n CometTransport.prototype.requestDisconnect = function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'CometTransport.requestDisconnect()');\n this._requestCloseOrDisconnect(false);\n };\n CometTransport.prototype._requestCloseOrDisconnect = function (closing) {\n var _this = this;\n var closeOrDisconnectUri = closing ? this.closeUri : this.disconnectUri;\n if (closeOrDisconnectUri) {\n var request = this.createRequest(closeOrDisconnectUri, null, this.authParams, null, XHRStates_1.default.REQ_SEND);\n request.on('complete', function (err) {\n if (err) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'CometTransport.request' + (closing ? 'Close()' : 'Disconnect()'), 'request returned err = ' + Utils.inspectError(err));\n _this.finish('disconnected', err);\n }\n });\n request.exec();\n }\n };\n CometTransport.prototype.dispose = function () {\n var _this = this;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'CometTransport.dispose()', '');\n if (!this.isDisposed) {\n this.isDisposed = true;\n if (this.recvRequest) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'CometTransport.dispose()', 'aborting recv request');\n this.recvRequest.abort();\n this.recvRequest = null;\n }\n /* In almost all cases the transport will be finished before it's\n * disposed. Finish here just to make sure. */\n this.finish('disconnected', connectionerrors_1.default.disconnected());\n platform_1.default.Config.nextTick(function () {\n _this.emit('disposed');\n });\n }\n };\n CometTransport.prototype.onConnect = function (message) {\n var _a;\n /* if this transport has been disposed whilst awaiting connection, do nothing */\n if (this.isDisposed) {\n return;\n }\n /* the connectionKey in a comet connected response is really\n * <instId>-<connectionKey> */\n var connectionStr = (_a = message.connectionDetails) === null || _a === void 0 ? void 0 : _a.connectionKey;\n transport_1.default.prototype.onConnect.call(this, message);\n var baseConnectionUri = this.baseUri + connectionStr;\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'CometTransport.onConnect()', 'baseUri = ' + baseConnectionUri);\n this.sendUri = baseConnectionUri + '/send';\n this.recvUri = baseConnectionUri + '/recv';\n this.closeUri = baseConnectionUri + '/close';\n this.disconnectUri = baseConnectionUri + '/disconnect';\n };\n CometTransport.prototype.send = function (message) {\n if (this.sendRequest) {\n /* there is a pending send, so queue this message */\n this.pendingItems = this.pendingItems || [];\n this.pendingItems.push(message);\n return;\n }\n /* send this, plus any pending, now */\n var pendingItems = this.pendingItems || [];\n pendingItems.push(message);\n this.pendingItems = null;\n this.sendItems(pendingItems);\n };\n CometTransport.prototype.sendAnyPending = function () {\n var pendingItems = this.pendingItems;\n if (!pendingItems) {\n return;\n }\n this.pendingItems = null;\n this.sendItems(pendingItems);\n };\n CometTransport.prototype.sendItems = function (items) {\n var _this = this;\n var sendRequest = (this.sendRequest = this.createRequest(this.sendUri, null, this.authParams, this.encodeRequest(items), XHRStates_1.default.REQ_SEND));\n sendRequest.on('complete', function (err, data) {\n if (err)\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'CometTransport.sendItems()', 'on complete: err = ' + Utils.inspectError(err));\n _this.sendRequest = null;\n /* the result of the request, even if a nack, is usually a protocol response\n * contained in the data. An err is anomolous, and indicates some issue with the\n * network,transport, or connection */\n if (err) {\n if (err.code) {\n /* A protocol error received from realtime. TODO: once realtime\n * consistendly sends errors wrapped in protocol messages, should be\n * able to remove this */\n _this.onData(protocolMessageFromRawError(err));\n }\n else {\n /* A network/xhr error. Don't bother wrapping in a protocol message,\n * just disconnect the transport */\n _this.disconnect(err);\n }\n return;\n }\n if (data) {\n _this.onData(data);\n }\n if (_this.pendingItems) {\n platform_1.default.Config.nextTick(function () {\n /* If there's a new send request by now, any pending items will have\n * been picked up by that; any new ones added since then will be\n * picked up after that one completes */\n if (!_this.sendRequest) {\n _this.sendAnyPending();\n }\n });\n }\n });\n sendRequest.exec();\n };\n CometTransport.prototype.recv = function () {\n var _this = this;\n /* do nothing if there is an active request, which might be streaming */\n if (this.recvRequest)\n return;\n /* If we're no longer connected, do nothing */\n if (!this.isConnected)\n return;\n var recvRequest = (this.recvRequest = this.createRequest(this.recvUri, null, this.authParams, null, this.stream ? XHRStates_1.default.REQ_RECV_STREAM : XHRStates_1.default.REQ_RECV_POLL));\n recvRequest.on('data', function (data) {\n _this.onData(data);\n });\n recvRequest.on('complete', function (err) {\n _this.recvRequest = null;\n /* A request completing must be considered activity, as realtime sends\n * heartbeats every 15s since a request began, not every 15s absolutely */\n _this.onActivity();\n if (err) {\n if (err.code) {\n /* A protocol error received from realtime. TODO: once realtime\n * consistently sends errors wrapped in protocol messages, should be\n * able to remove this */\n _this.onData(protocolMessageFromRawError(err));\n }\n else {\n /* A network/xhr error. Don't bother wrapping in a protocol message,\n * just disconnect the transport */\n _this.disconnect(err);\n }\n return;\n }\n platform_1.default.Config.nextTick(function () {\n _this.recv();\n });\n });\n recvRequest.exec();\n };\n CometTransport.prototype.onData = function (responseData) {\n try {\n var items = this.decodeResponse(responseData);\n if (items && items.length)\n for (var i = 0; i < items.length; i++)\n this.onProtocolMessage(protocolmessage_1.default.fromDeserialized(items[i]));\n }\n catch (e) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'CometTransport.onData()', 'Unexpected exception handing channel event: ' + e.stack);\n }\n };\n CometTransport.prototype.encodeRequest = function (requestItems) {\n return JSON.stringify(requestItems);\n };\n CometTransport.prototype.decodeResponse = function (responseData) {\n if (typeof responseData == 'string')\n return JSON.parse(responseData);\n return responseData;\n };\n return CometTransport;\n}(transport_1.default));\nexports.default = CometTransport;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isSuccessCode = void 0;\nvar HttpStatusCodes;\n(function (HttpStatusCodes) {\n HttpStatusCodes[HttpStatusCodes[\"Success\"] = 200] = \"Success\";\n HttpStatusCodes[HttpStatusCodes[\"NoContent\"] = 204] = \"NoContent\";\n HttpStatusCodes[HttpStatusCodes[\"BadRequest\"] = 400] = \"BadRequest\";\n HttpStatusCodes[HttpStatusCodes[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HttpStatusCodes[HttpStatusCodes[\"Forbidden\"] = 403] = \"Forbidden\";\n HttpStatusCodes[HttpStatusCodes[\"RequestTimeout\"] = 408] = \"RequestTimeout\";\n HttpStatusCodes[HttpStatusCodes[\"InternalServerError\"] = 500] = \"InternalServerError\";\n})(HttpStatusCodes || (HttpStatusCodes = {}));\nfunction isSuccessCode(statusCode) {\n return statusCode >= HttpStatusCodes.Success && statusCode < HttpStatusCodes.BadRequest;\n}\nexports.isSuccessCode = isSuccessCode;\nexports.default = HttpStatusCodes;\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar auth_1 = tslib_1.__importDefault(__webpack_require__(18));\nvar HttpMethods_1 = tslib_1.__importDefault(__webpack_require__(19));\nvar errorinfo_1 = __webpack_require__(4);\nvar HttpStatusCodes_1 = tslib_1.__importDefault(__webpack_require__(14));\nfunction withAuthDetails(rest, headers, params, errCallback, opCallback) {\n if (rest.http.supportsAuthHeaders) {\n rest.auth.getAuthHeaders(function (err, authHeaders) {\n if (err)\n errCallback(err);\n else\n opCallback(Utils.mixin(authHeaders, headers), params);\n });\n }\n else {\n rest.auth.getAuthParams(function (err, authParams) {\n if (err)\n errCallback(err);\n else\n opCallback(headers, Utils.mixin(authParams, params));\n });\n }\n}\nfunction unenvelope(callback, format) {\n return function (err, body, outerHeaders, unpacked, outerStatusCode) {\n if (err && !body) {\n callback(err);\n return;\n }\n if (outerStatusCode === HttpStatusCodes_1.default.NoContent) {\n callback(err, [], outerHeaders, true, outerStatusCode);\n return;\n }\n if (!unpacked) {\n try {\n body = Utils.decodeBody(body, format);\n }\n catch (e) {\n if (Utils.isErrorInfoOrPartialErrorInfo(e)) {\n callback(e);\n }\n else {\n callback(new errorinfo_1.PartialErrorInfo(Utils.inspectError(e), null));\n }\n return;\n }\n }\n if (!body) {\n callback(new errorinfo_1.PartialErrorInfo('unenvelope(): Response body is missing', null));\n return;\n }\n var _a = body, wrappedStatusCode = _a.statusCode, response = _a.response, wrappedHeaders = _a.headers;\n if (wrappedStatusCode === undefined) {\n /* Envelope already unwrapped by the transport */\n callback(err, body, outerHeaders, true, outerStatusCode);\n return;\n }\n if (wrappedStatusCode < 200 || wrappedStatusCode >= 300) {\n /* handle wrapped errors */\n var wrappedErr = (response && response.error) || err;\n if (!wrappedErr) {\n wrappedErr = new Error('Error in unenveloping ' + body);\n wrappedErr.statusCode = wrappedStatusCode;\n }\n callback(wrappedErr, response, wrappedHeaders, true, wrappedStatusCode);\n return;\n }\n callback(err, response, wrappedHeaders, true, wrappedStatusCode);\n };\n}\nfunction paramString(params) {\n var paramPairs = [];\n if (params) {\n for (var needle in params) {\n paramPairs.push(needle + '=' + params[needle]);\n }\n }\n return paramPairs.join('&');\n}\nfunction urlFromPathAndParams(path, params) {\n return path + (params ? '?' : '') + paramString(params);\n}\nfunction logResponseHandler(callback, method, path, params) {\n return function (err, body, headers, unpacked, statusCode) {\n if (err) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Resource.' + method + '()', 'Received Error; ' + urlFromPathAndParams(path, params) + '; Error: ' + Utils.inspectError(err));\n }\n else {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Resource.' + method + '()', 'Received; ' +\n urlFromPathAndParams(path, params) +\n '; Headers: ' +\n paramString(headers) +\n '; StatusCode: ' +\n statusCode +\n '; Body: ' +\n (platform_1.default.BufferUtils.isBuffer(body) ? body.toString() : body));\n }\n if (callback) {\n callback(err, body, headers, unpacked, statusCode);\n }\n };\n}\nvar Resource = /** @class */ (function () {\n function Resource() {\n }\n Resource.get = function (rest, path, headers, params, envelope, callback) {\n Resource.do(HttpMethods_1.default.Get, rest, path, null, headers, params, envelope, callback);\n };\n Resource.delete = function (rest, path, headers, params, envelope, callback) {\n Resource.do(HttpMethods_1.default.Delete, rest, path, null, headers, params, envelope, callback);\n };\n Resource.post = function (rest, path, body, headers, params, envelope, callback) {\n Resource.do(HttpMethods_1.default.Post, rest, path, body, headers, params, envelope, callback);\n };\n Resource.patch = function (rest, path, body, headers, params, envelope, callback) {\n Resource.do(HttpMethods_1.default.Patch, rest, path, body, headers, params, envelope, callback);\n };\n Resource.put = function (rest, path, body, headers, params, envelope, callback) {\n Resource.do(HttpMethods_1.default.Put, rest, path, body, headers, params, envelope, callback);\n };\n Resource.do = function (method, rest, path, body, headers, params, envelope, callback) {\n if (logger_1.default.shouldLog(logger_1.default.LOG_MICRO)) {\n callback = logResponseHandler(callback, method, path, params);\n }\n if (envelope) {\n callback = callback && unenvelope(callback, envelope);\n (params = params || {})['envelope'] = envelope;\n }\n function doRequest(headers, params) {\n var _a;\n if (logger_1.default.shouldLog(logger_1.default.LOG_MICRO)) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Resource.' + method + '()', 'Sending; ' + urlFromPathAndParams(path, params));\n }\n if (logger_1.default.shouldLog(logger_1.default.LOG_MICRO)) {\n var decodedBody = body;\n if (((_a = headers['content-type']) === null || _a === void 0 ? void 0 : _a.indexOf('msgpack')) > 0) {\n try {\n decodedBody = platform_1.default.Config.msgpack.decode(body);\n }\n catch (decodeErr) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Resource.' + method + '()', 'Sending MsgPack Decoding Error: ' + Utils.inspectError(decodeErr));\n }\n }\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Resource.' + method + '()', 'Sending; ' + urlFromPathAndParams(path, params) + '; Body: ' + decodedBody);\n }\n rest.http.do(method, rest, path, headers, body, params, function (err, res, resHeaders, unpacked, statusCode) {\n if (err && auth_1.default.isTokenErr(err)) {\n /* token has expired, so get a new one */\n rest.auth.authorize(null, null, function (err) {\n if (err) {\n callback(err);\n return;\n }\n /* retry ... */\n withAuthDetails(rest, headers, params, callback, doRequest);\n });\n return;\n }\n callback(err, res, resHeaders, unpacked, statusCode);\n });\n }\n withAuthDetails(rest, headers, params, callback, doRequest);\n };\n return Resource;\n}());\nexports.default = Resource;\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nvar message_1 = tslib_1.__importDefault(__webpack_require__(9));\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nfunction toActionValue(actionString) {\n return PresenceMessage.Actions.indexOf(actionString);\n}\nvar PresenceMessage = /** @class */ (function () {\n function PresenceMessage() {\n }\n /* Returns whether this presenceMessage is synthesized, i.e. was not actually\n * sent by the connection (usually means a leave event sent 15s after a\n * disconnection). This is useful because synthesized messages cannot be\n * compared for newness by id lexicographically - RTP2b1\n */\n PresenceMessage.prototype.isSynthesized = function () {\n if (!this.id || !this.connectionId) {\n return true;\n }\n return this.id.substring(this.connectionId.length, 0) !== this.connectionId;\n };\n /* RTP2b2 */\n PresenceMessage.prototype.parseId = function () {\n if (!this.id)\n throw new Error('parseId(): Presence message does not contain an id');\n var parts = this.id.split(':');\n return {\n connectionId: parts[0],\n msgSerial: parseInt(parts[1], 10),\n index: parseInt(parts[2], 10),\n };\n };\n /**\n * Overload toJSON() to intercept JSON.stringify()\n * @return {*}\n */\n PresenceMessage.prototype.toJSON = function () {\n /* encode data to base64 if present and we're returning real JSON;\n * although msgpack calls toJSON(), we know it is a stringify()\n * call if it has a non-empty arguments list */\n var data = this.data;\n var encoding = this.encoding;\n if (data && platform_1.default.BufferUtils.isBuffer(data)) {\n if (arguments.length > 0) {\n /* stringify call */\n encoding = encoding ? encoding + '/base64' : 'base64';\n data = platform_1.default.BufferUtils.base64Encode(data);\n }\n else {\n /* Called by msgpack. toBuffer returns a datatype understandable by\n * that platform's msgpack implementation (Buffer in node, Uint8Array\n * in browsers) */\n data = platform_1.default.BufferUtils.toBuffer(data);\n }\n }\n return {\n id: this.id,\n clientId: this.clientId,\n /* Convert presence action back to an int for sending to Ably */\n action: toActionValue(this.action),\n data: data,\n encoding: encoding,\n extras: this.extras,\n };\n };\n PresenceMessage.prototype.toString = function () {\n var result = '[PresenceMessage';\n result += '; action=' + this.action;\n if (this.id)\n result += '; id=' + this.id;\n if (this.timestamp)\n result += '; timestamp=' + this.timestamp;\n if (this.clientId)\n result += '; clientId=' + this.clientId;\n if (this.connectionId)\n result += '; connectionId=' + this.connectionId;\n if (this.encoding)\n result += '; encoding=' + this.encoding;\n if (this.data) {\n if (typeof this.data == 'string')\n result += '; data=' + this.data;\n else if (platform_1.default.BufferUtils.isBuffer(this.data))\n result += '; data (buffer)=' + platform_1.default.BufferUtils.base64Encode(this.data);\n else\n result += '; data (json)=' + JSON.stringify(this.data);\n }\n if (this.extras) {\n result += '; extras=' + JSON.stringify(this.extras);\n }\n result += ']';\n return result;\n };\n PresenceMessage.fromResponseBody = function (body, options, format) {\n var messages = [];\n if (format) {\n body = Utils.decodeBody(body, format);\n }\n for (var i = 0; i < body.length; i++) {\n var msg = (messages[i] = PresenceMessage.fromValues(body[i], true));\n try {\n PresenceMessage.decode(msg, options);\n }\n catch (e) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'PresenceMessage.fromResponseBody()', e.toString());\n }\n }\n return messages;\n };\n PresenceMessage.fromValues = function (values, stringifyAction) {\n if (stringifyAction) {\n values.action = PresenceMessage.Actions[values.action];\n }\n return Object.assign(new PresenceMessage(), values);\n };\n PresenceMessage.fromValuesArray = function (values) {\n var count = values.length, result = new Array(count);\n for (var i = 0; i < count; i++)\n result[i] = PresenceMessage.fromValues(values[i]);\n return result;\n };\n PresenceMessage.fromEncoded = function (encoded, options) {\n var msg = PresenceMessage.fromValues(encoded, true);\n /* if decoding fails at any point, catch and return the message decoded to\n * the fullest extent possible */\n try {\n PresenceMessage.decode(msg, options !== null && options !== void 0 ? options : {});\n }\n catch (e) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'PresenceMessage.fromEncoded()', e.toString());\n }\n return msg;\n };\n PresenceMessage.fromEncodedArray = function (encodedArray, options) {\n return encodedArray.map(function (encoded) {\n return PresenceMessage.fromEncoded(encoded, options);\n });\n };\n PresenceMessage.fromData = function (data) {\n if (data instanceof PresenceMessage) {\n return data;\n }\n return PresenceMessage.fromValues({\n data: data,\n });\n };\n PresenceMessage.Actions = ['absent', 'present', 'enter', 'leave', 'update'];\n PresenceMessage.encode = message_1.default.encode;\n PresenceMessage.decode = message_1.default.decode;\n PresenceMessage.getMessagesSize = message_1.default.getMessagesSize;\n return PresenceMessage;\n}());\nexports.default = PresenceMessage;\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar eventemitter_1 = tslib_1.__importDefault(__webpack_require__(7));\nvar errorinfo_1 = tslib_1.__importStar(__webpack_require__(4));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar defaults_1 = tslib_1.__importDefault(__webpack_require__(8));\nvar XHRStates_1 = tslib_1.__importDefault(__webpack_require__(22));\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nfunction isAblyError(responseBody, headers) {\n return Utils.arrIn(Utils.allToLowerCase(Utils.keysArray(headers)), 'x-ably-errorcode');\n}\nfunction getAblyError(responseBody, headers) {\n if (isAblyError(responseBody, headers)) {\n return responseBody.error && errorinfo_1.default.fromValues(responseBody.error);\n }\n}\nvar noop = function () { };\nvar idCounter = 0;\nvar pendingRequests = {};\nvar isIE = typeof global !== 'undefined' && global.XDomainRequest;\nfunction ieVersion() {\n var match = navigator.userAgent.toString().match(/MSIE\\s([\\d.]+)/);\n return match && Number(match[1]);\n}\nfunction needJsonEnvelope() {\n /* IE 10 xhr bug: http://stackoverflow.com/a/16320339 */\n var version;\n return isIE && (version = ieVersion()) && version === 10;\n}\nfunction getHeader(xhr, header) {\n return xhr.getResponseHeader && xhr.getResponseHeader(header);\n}\n/* Safari mysteriously returns 'Identity' for transfer-encoding when in fact\n * it is 'chunked'. So instead, decide that it is chunked when\n * transfer-encoding is present or content-length is absent. ('or' because\n * when using http2 streaming, there's no transfer-encoding header, but can\n * still deduce streaming from lack of content-length) */\nfunction isEncodingChunked(xhr) {\n return (xhr.getResponseHeader && (xhr.getResponseHeader('transfer-encoding') || !xhr.getResponseHeader('content-length')));\n}\nfunction getHeadersAsObject(xhr) {\n var headerPairs = Utils.trim(xhr.getAllResponseHeaders()).split('\\r\\n');\n var headers = {};\n for (var i = 0; i < headerPairs.length; i++) {\n var parts = headerPairs[i].split(':').map(Utils.trim);\n headers[parts[0].toLowerCase()] = parts[1];\n }\n return headers;\n}\nvar XHRRequest = /** @class */ (function (_super) {\n tslib_1.__extends(XHRRequest, _super);\n function XHRRequest(uri, headers, params, body, requestMode, timeouts, method) {\n var _this = _super.call(this) || this;\n params = params || {};\n params.rnd = Utils.cheapRandStr();\n if (needJsonEnvelope() && !params.envelope)\n params.envelope = 'json';\n _this.uri = uri + Utils.toQueryString(params);\n _this.headers = headers || {};\n _this.body = body;\n _this.method = method ? method.toUpperCase() : Utils.isEmptyArg(body) ? 'GET' : 'POST';\n _this.requestMode = requestMode;\n _this.timeouts = timeouts;\n _this.timedOut = false;\n _this.requestComplete = false;\n _this.id = String(++idCounter);\n pendingRequests[_this.id] = _this;\n return _this;\n }\n XHRRequest.createRequest = function (uri, headers, params, body, requestMode, timeouts, method) {\n /* XHR requests are used either with the context being a realtime\n * transport, or with timeouts passed in (for when used by a rest client),\n * or completely standalone. Use the appropriate timeouts in each case */\n var _timeouts = timeouts || defaults_1.default.TIMEOUTS;\n return new XHRRequest(uri, headers, Utils.copy(params), body, requestMode, _timeouts, method);\n };\n XHRRequest.prototype.complete = function (err, body, headers, unpacked, statusCode) {\n if (!this.requestComplete) {\n this.requestComplete = true;\n if (!err && body) {\n this.emit('data', body);\n }\n this.emit('complete', err, body, headers, unpacked, statusCode);\n this.dispose();\n }\n };\n XHRRequest.prototype.abort = function () {\n this.dispose();\n };\n XHRRequest.prototype.exec = function () {\n var _this = this;\n var headers = this.headers;\n var timeout = this.requestMode == XHRStates_1.default.REQ_SEND ? this.timeouts.httpRequestTimeout : this.timeouts.recvTimeout, timer = (this.timer = setTimeout(function () {\n _this.timedOut = true;\n xhr.abort();\n }, timeout)), method = this.method, xhr = (this.xhr = new XMLHttpRequest()), accept = headers['accept'];\n var body = this.body;\n var responseType = 'text';\n if (!accept) {\n // Default to JSON\n headers['accept'] = 'application/json';\n }\n else if (accept.indexOf('application/x-msgpack') === 0) {\n // Msgpack responses will be typed as ArrayBuffer\n responseType = 'arraybuffer';\n }\n if (body) {\n var contentType = headers['content-type'] || (headers['content-type'] = 'application/json');\n if (contentType.indexOf('application/json') > -1 && typeof body != 'string')\n body = JSON.stringify(body);\n }\n // Can probably remove this directive if https://github.com/nodesecurity/eslint-plugin-security/issues/26 is resolved\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n xhr.open(method, this.uri, true);\n xhr.responseType = responseType;\n if ('authorization' in headers) {\n xhr.withCredentials = true;\n }\n for (var h in headers)\n xhr.setRequestHeader(h, headers[h]);\n var errorHandler = function (errorEvent, message, code, statusCode) {\n var _a;\n var errorMessage = message + ' (event type: ' + errorEvent.type + ')';\n if ((_a = _this === null || _this === void 0 ? void 0 : _this.xhr) === null || _a === void 0 ? void 0 : _a.statusText)\n errorMessage += ', current statusText is ' + _this.xhr.statusText;\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Request.on' + errorEvent.type + '()', errorMessage);\n _this.complete(new errorinfo_1.PartialErrorInfo(errorMessage, code, statusCode));\n };\n xhr.onerror = function (errorEvent) {\n errorHandler(errorEvent, 'XHR error occurred', null, 400);\n };\n xhr.onabort = function (errorEvent) {\n if (_this.timedOut) {\n errorHandler(errorEvent, 'Request aborted due to request timeout expiring', null, 408);\n }\n else {\n errorHandler(errorEvent, 'Request cancelled', null, 400);\n }\n };\n xhr.ontimeout = function (errorEvent) {\n errorHandler(errorEvent, 'Request timed out', null, 408);\n };\n var streaming;\n var statusCode;\n var successResponse;\n var streamPos = 0;\n var unpacked = false;\n var onResponse = function () {\n clearTimeout(timer);\n successResponse = statusCode < 400;\n if (statusCode == 204) {\n _this.complete(null, null, null, null, statusCode);\n return;\n }\n streaming = _this.requestMode == XHRStates_1.default.REQ_RECV_STREAM && successResponse && isEncodingChunked(xhr);\n };\n var onEnd = function () {\n var parsedResponse;\n try {\n var contentType = getHeader(xhr, 'content-type');\n /* Be liberal in what we accept; buggy auth servers may respond\n * without the correct contenttype, but assume they're still\n * responding with json */\n var json = contentType ? contentType.indexOf('application/json') >= 0 : xhr.responseType == 'text';\n if (json) {\n /* If we requested msgpack but server responded with json, then since\n * we set the responseType expecting msgpack, the response will be\n * an ArrayBuffer containing json */\n var jsonResponseBody = xhr.responseType === 'arraybuffer'\n ? platform_1.default.BufferUtils.utf8Decode(xhr.response)\n : String(xhr.responseText);\n if (jsonResponseBody.length) {\n parsedResponse = JSON.parse(jsonResponseBody);\n }\n else {\n parsedResponse = jsonResponseBody;\n }\n unpacked = true;\n }\n else {\n parsedResponse = xhr.response;\n }\n if (parsedResponse.response !== undefined) {\n /* unwrap JSON envelope */\n statusCode = parsedResponse.statusCode;\n successResponse = statusCode < 400;\n headers = parsedResponse.headers;\n parsedResponse = parsedResponse.response;\n }\n else {\n headers = getHeadersAsObject(xhr);\n }\n }\n catch (e) {\n _this.complete(new errorinfo_1.PartialErrorInfo('Malformed response body from server: ' + e.message, null, 400));\n return;\n }\n /* If response is an array, it's an array of protocol messages -- even if\n * is contains an error action (hence the nonsuccess statuscode), we can\n * consider the request to have succeeded, just pass it on to\n * onProtocolMessage to decide what to do */\n if (successResponse || Utils.isArray(parsedResponse)) {\n _this.complete(null, parsedResponse, headers, unpacked, statusCode);\n return;\n }\n var err = getAblyError(parsedResponse, headers);\n if (!err) {\n err = new errorinfo_1.PartialErrorInfo('Error response received from server: ' +\n statusCode +\n ' body was: ' +\n platform_1.default.Config.inspect(parsedResponse), null, statusCode);\n }\n _this.complete(err, parsedResponse, headers, unpacked, statusCode);\n };\n function onProgress() {\n var responseText = xhr.responseText;\n var bodyEnd = responseText.length - 1;\n var idx, chunk;\n while (streamPos < bodyEnd && (idx = responseText.indexOf('\\n', streamPos)) > -1) {\n chunk = responseText.slice(streamPos, idx);\n streamPos = idx + 1;\n onChunk(chunk);\n }\n }\n var onChunk = function (chunk) {\n try {\n chunk = JSON.parse(chunk);\n }\n catch (e) {\n _this.complete(new errorinfo_1.PartialErrorInfo('Malformed response body from server: ' + e.message, null, 400));\n return;\n }\n _this.emit('data', chunk);\n };\n var onStreamEnd = function () {\n onProgress();\n _this.streamComplete = true;\n platform_1.default.Config.nextTick(function () {\n _this.complete();\n });\n };\n xhr.onreadystatechange = function () {\n var readyState = xhr.readyState;\n if (readyState < 3)\n return;\n if (xhr.status !== 0) {\n if (statusCode === undefined) {\n statusCode = xhr.status;\n /* IE returns 1223 for 204: http://bugs.jquery.com/ticket/1450 */\n if (statusCode === 1223)\n statusCode = 204;\n onResponse();\n }\n if (readyState == 3 && streaming) {\n onProgress();\n }\n else if (readyState == 4) {\n if (streaming)\n onStreamEnd();\n else\n onEnd();\n }\n }\n };\n xhr.send(body);\n };\n XHRRequest.prototype.dispose = function () {\n var xhr = this.xhr;\n if (xhr) {\n xhr.onreadystatechange = xhr.onerror = xhr.onabort = xhr.ontimeout = noop;\n this.xhr = null;\n var timer = this.timer;\n if (timer) {\n clearTimeout(timer);\n this.timer = null;\n }\n if (!this.requestComplete)\n xhr.abort();\n }\n delete pendingRequests[this.id];\n };\n return XHRRequest;\n}(eventemitter_1.default));\nexports.default = XHRRequest;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13)))\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar multicaster_1 = tslib_1.__importDefault(__webpack_require__(24));\nvar errorinfo_1 = tslib_1.__importDefault(__webpack_require__(4));\nvar hmac_sha256_1 = tslib_1.__importDefault(__webpack_require__(45));\nvar enc_base64_1 = __webpack_require__(11);\nvar HttpMethods_1 = tslib_1.__importDefault(__webpack_require__(19));\nvar HttpStatusCodes_1 = tslib_1.__importDefault(__webpack_require__(14));\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nvar resource_1 = tslib_1.__importDefault(__webpack_require__(15));\nvar MAX_TOKEN_LENGTH = Math.pow(2, 17);\nfunction noop() { }\nfunction random() {\n return ('000000' + Math.floor(Math.random() * 1e16)).slice(-16);\n}\nfunction isRealtime(client) {\n return !!client.connection;\n}\n/* A client auth callback may give errors in any number of formats; normalise to an ErrorInfo or PartialErrorInfo */\nfunction normaliseAuthcallbackError(err) {\n if (!Utils.isErrorInfoOrPartialErrorInfo(err)) {\n return new errorinfo_1.default(Utils.inspectError(err), err.code || 40170, err.statusCode || 401);\n }\n /* network errors will not have an inherent error code */\n if (!err.code) {\n if (err.statusCode === 403) {\n err.code = 40300;\n }\n else {\n err.code = 40170;\n /* normalise statusCode to 401 per RSA4e */\n err.statusCode = 401;\n }\n }\n return err;\n}\nvar hmac = function (text, key) {\n if (platform_1.default.Config.createHmac) {\n var inst = platform_1.default.Config.createHmac('SHA256', key);\n inst.update(text);\n return inst.digest('base64');\n }\n return (0, enc_base64_1.stringify)((0, hmac_sha256_1.default)(text, key));\n};\nfunction c14n(capability) {\n if (!capability)\n return '';\n if (typeof capability == 'string')\n capability = JSON.parse(capability);\n var c14nCapability = Object.create(null);\n var keys = Utils.keysArray(capability, true);\n if (!keys)\n return '';\n keys.sort();\n for (var i = 0; i < keys.length; i++) {\n c14nCapability[keys[i]] = capability[keys[i]].sort();\n }\n return JSON.stringify(c14nCapability);\n}\nfunction logAndValidateTokenAuthMethod(authOptions) {\n if (authOptions.authCallback) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Auth()', 'using token auth with authCallback');\n }\n else if (authOptions.authUrl) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Auth()', 'using token auth with authUrl');\n }\n else if (authOptions.key) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Auth()', 'using token auth with client-side signing');\n }\n else if (authOptions.tokenDetails) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Auth()', 'using token auth with supplied token only');\n }\n else {\n var msg = 'authOptions must include valid authentication parameters';\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Auth()', msg);\n throw new Error(msg);\n }\n}\nfunction basicAuthForced(options) {\n return 'useTokenAuth' in options && !options.useTokenAuth;\n}\n/* RSA4 */\nfunction useTokenAuth(options) {\n return (options.useTokenAuth ||\n (!basicAuthForced(options) && (options.authCallback || options.authUrl || options.token || options.tokenDetails)));\n}\n/* RSA4a */\nfunction noWayToRenew(options) {\n return !options.key && !options.authCallback && !options.authUrl;\n}\nvar trId = 0;\nfunction getTokenRequestId() {\n return trId++;\n}\nvar Auth = /** @class */ (function () {\n function Auth(client, options) {\n // This initialization is always overwritten and only used to prevent a TypeScript compiler error\n this.authOptions = {};\n this.client = client;\n this.tokenParams = options.defaultTokenParams || {};\n /* The id of the current token request if one is in progress, else null */\n this.currentTokenRequestId = null;\n this.waitingForTokenRequest = null;\n if (useTokenAuth(options)) {\n /* Token auth */\n if (options.key && !hmac) {\n var msg = 'client-side token request signing not supported';\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Auth()', msg);\n throw new Error(msg);\n }\n if (noWayToRenew(options)) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Auth()', 'Warning: library initialized with a token literal without any way to renew the token when it expires (no authUrl, authCallback, or key). See https://help.ably.io/error/40171 for help');\n }\n this._saveTokenOptions(options.defaultTokenParams, options);\n logAndValidateTokenAuthMethod(this.authOptions);\n }\n else {\n /* Basic auth */\n if (!options.key) {\n var msg = 'No authentication options provided; need one of: key, authUrl, or authCallback (or for testing only, token or tokenDetails)';\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Auth()', msg);\n throw new errorinfo_1.default(msg, 40160, 401);\n }\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Auth()', 'anonymous, using basic auth');\n this._saveBasicOptions(options);\n }\n }\n Auth.prototype.authorize = function (tokenParams, authOptions, callback) {\n var _this = this;\n var _authOptions;\n /* shuffle and normalise arguments as necessary */\n if (typeof tokenParams == 'function' && !callback) {\n callback = tokenParams;\n _authOptions = tokenParams = null;\n }\n else if (typeof authOptions == 'function' && !callback) {\n callback = authOptions;\n _authOptions = null;\n }\n else {\n _authOptions = authOptions;\n }\n if (!callback) {\n if (this.client.options.promises) {\n return Utils.promisify(this, 'authorize', arguments);\n }\n }\n /* RSA10a: authorize() call implies token auth. If a key is passed it, we\n * just check if it doesn't clash and assume we're generating a token from it */\n if (_authOptions && _authOptions.key && this.authOptions.key !== _authOptions.key) {\n throw new errorinfo_1.default('Unable to update auth options with incompatible key', 40102, 401);\n }\n if (_authOptions && 'force' in _authOptions) {\n logger_1.default.deprecated('The `force` auth option', 'If you’re using this option to force `authorize()` to fetch a new token even if the current token has not expired, this is no longer necessary, as `authorize()` now always fetches a new token. Update your code to no longer pass the `force` auth option. Note that, in general, passing an auth options argument to `authorize()` will overwrite the library’s stored auth options, which may not be what you want. The library currently contains a special case behavior where passing an auth options object which only contains `{ force: true }` will _not_ overwrite the stored options. This special case behavior will be removed alongside support for the `force` option, so if you’re currently passing `authorize()` an auth options object which only contains `{ force: true }`, you should stop passing it an auth options object entirely.');\n /* Emulate the old behaviour: if 'force' was the only member of authOptions,\n * set it to null so it doesn't overwrite stored. TODO: remove in version 1.0 */\n if (Utils.isOnlyPropIn(_authOptions, 'force')) {\n _authOptions = null;\n }\n }\n this._forceNewToken(tokenParams, _authOptions, function (err, tokenDetails) {\n if (err) {\n if (_this.client.connection && err.statusCode === HttpStatusCodes_1.default.Forbidden) {\n /* Per RSA4d & RSA4d1, if the auth server explicitly repudiates our right to\n * stay connecticed by returning a 403, we actively disconnect the connection\n * even though we may well still have time left in the old token. */\n _this.client.connection.connectionManager.actOnErrorFromAuthorize(err);\n }\n callback === null || callback === void 0 ? void 0 : callback(err);\n return;\n }\n /* RTC8\n * - When authorize called by an end user and have a realtime connection,\n * don't call back till new token has taken effect.\n * - Use this.client.connection as a proxy for (this.client instanceof Realtime),\n * which doesn't work in node as Realtime isn't part of the vm context for Rest clients */\n if (isRealtime(_this.client)) {\n _this.client.connection.connectionManager.onAuthUpdated(tokenDetails, callback || noop);\n }\n else {\n callback === null || callback === void 0 ? void 0 : callback(null, tokenDetails);\n }\n });\n };\n Auth.prototype.authorise = function (tokenParams, authOptions, callback) {\n logger_1.default.renamedMethod('Auth', 'authorise', 'authorize');\n this.authorize(tokenParams, authOptions, callback);\n };\n /* For internal use, eg by connectionManager - useful when want to call back\n * as soon as we have the new token, rather than waiting for it to take\n * effect on the connection as #authorize does */\n Auth.prototype._forceNewToken = function (tokenParams, authOptions, callback) {\n var _this = this;\n /* get rid of current token even if still valid */\n this.tokenDetails = null;\n /* _save normalises the tokenParams and authOptions and updates the auth\n * object. All subsequent operations should use the values on `this`,\n * not the passed in ones. */\n this._saveTokenOptions(tokenParams, authOptions);\n logAndValidateTokenAuthMethod(this.authOptions);\n this._ensureValidAuthCredentials(true, function (err, tokenDetails) {\n /* RSA10g */\n delete _this.tokenParams.timestamp;\n delete _this.authOptions.queryTime;\n callback(err, tokenDetails);\n });\n };\n Auth.prototype.requestToken = function (tokenParams, authOptions, callback) {\n var _this = this;\n /* shuffle and normalise arguments as necessary */\n if (typeof tokenParams == 'function' && !callback) {\n callback = tokenParams;\n authOptions = tokenParams = null;\n }\n else if (typeof authOptions == 'function' && !callback) {\n callback = authOptions;\n authOptions = null;\n }\n if (!callback && this.client.options.promises) {\n return Utils.promisify(this, 'requestToken', arguments);\n }\n /* RSA8e: if authOptions passed in, they're used instead of stored, don't merge them */\n authOptions = authOptions || this.authOptions;\n tokenParams = tokenParams || Utils.copy(this.tokenParams);\n var _callback = callback || noop;\n /* first set up whatever callback will be used to get signed\n * token requests */\n var tokenRequestCallback, client = this.client;\n if (authOptions.authCallback) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Auth.requestToken()', 'using token auth with authCallback');\n tokenRequestCallback = authOptions.authCallback;\n }\n else if (authOptions.authUrl) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Auth.requestToken()', 'using token auth with authUrl');\n tokenRequestCallback = function (params, cb) {\n var authHeaders = Utils.mixin({ accept: 'application/json, text/plain' }, authOptions.authHeaders);\n var usePost = authOptions.authMethod && authOptions.authMethod.toLowerCase() === 'post';\n var providedQsParams;\n /* Combine authParams with any qs params given in the authUrl */\n var queryIdx = authOptions.authUrl.indexOf('?');\n if (queryIdx > -1) {\n providedQsParams = Utils.parseQueryString(authOptions.authUrl.slice(queryIdx));\n authOptions.authUrl = authOptions.authUrl.slice(0, queryIdx);\n if (!usePost) {\n /* In case of conflict, authParams take precedence over qs params in the authUrl */\n authOptions.authParams = Utils.mixin(providedQsParams, authOptions.authParams);\n }\n }\n /* RSA8c2 */\n var authParams = Utils.mixin({}, authOptions.authParams || {}, params);\n var authUrlRequestCallback = function (err, body, headers, unpacked) {\n var contentType;\n if (err) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Auth.requestToken().tokenRequestCallback', 'Received Error: ' + Utils.inspectError(err));\n }\n else {\n contentType = headers['content-type'];\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Auth.requestToken().tokenRequestCallback', 'Received; content-type: ' + contentType + '; body: ' + Utils.inspectBody(body));\n }\n if (err || unpacked)\n return cb(err, body);\n if (platform_1.default.BufferUtils.isBuffer(body))\n body = body.toString();\n if (!contentType) {\n cb(new errorinfo_1.default('authUrl response is missing a content-type header', 40170, 401));\n return;\n }\n var json = contentType.indexOf('application/json') > -1, text = contentType.indexOf('text/plain') > -1 || contentType.indexOf('application/jwt') > -1;\n if (!json && !text) {\n cb(new errorinfo_1.default('authUrl responded with unacceptable content-type ' +\n contentType +\n ', should be either text/plain, application/jwt or application/json', 40170, 401));\n return;\n }\n if (json) {\n if (body.length > MAX_TOKEN_LENGTH) {\n cb(new errorinfo_1.default('authUrl response exceeded max permitted length', 40170, 401));\n return;\n }\n try {\n body = JSON.parse(body);\n }\n catch (e) {\n cb(new errorinfo_1.default('Unexpected error processing authURL response; err = ' + e.message, 40170, 401));\n return;\n }\n }\n cb(null, body, contentType);\n };\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Auth.requestToken().tokenRequestCallback', 'Requesting token from ' +\n authOptions.authUrl +\n '; Params: ' +\n JSON.stringify(authParams) +\n '; method: ' +\n (usePost ? 'POST' : 'GET'));\n if (usePost) {\n /* send body form-encoded */\n var headers = authHeaders || {};\n headers['content-type'] = 'application/x-www-form-urlencoded';\n var body = Utils.toQueryString(authParams).slice(1); /* slice is to remove the initial '?' */\n _this.client.http.doUri(HttpMethods_1.default.Post, client, authOptions.authUrl, headers, body, providedQsParams, authUrlRequestCallback);\n }\n else {\n _this.client.http.doUri(HttpMethods_1.default.Get, client, authOptions.authUrl, authHeaders || {}, null, authParams, authUrlRequestCallback);\n }\n };\n }\n else if (authOptions.key) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Auth.requestToken()', 'using token auth with client-side signing');\n tokenRequestCallback = function (params, cb) {\n _this.createTokenRequest(params, authOptions, cb);\n };\n }\n else {\n var msg = 'Need a new token, but authOptions does not include any way to request one (no authUrl, authCallback, or key)';\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Auth()', 'library initialized with a token literal without any way to renew the token when it expires (no authUrl, authCallback, or key). See https://help.ably.io/error/40171 for help');\n _callback(new errorinfo_1.default(msg, 40171, 403));\n return;\n }\n /* normalise token params */\n if ('capability' in tokenParams)\n tokenParams.capability = c14n(tokenParams.capability);\n var tokenRequest = function (signedTokenParams, tokenCb) {\n var keyName = signedTokenParams.keyName, path = '/keys/' + keyName + '/requestToken', tokenUri = function (host) {\n return client.baseUri(host) + path;\n };\n var requestHeaders = Utils.defaultPostHeaders(_this.client.options);\n if (authOptions.requestHeaders)\n Utils.mixin(requestHeaders, authOptions.requestHeaders);\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Auth.requestToken().requestToken', 'Sending POST to ' + path + '; Token params: ' + JSON.stringify(signedTokenParams));\n _this.client.http.do(HttpMethods_1.default.Post, client, tokenUri, requestHeaders, JSON.stringify(signedTokenParams), null, tokenCb);\n };\n var tokenRequestCallbackTimeoutExpired = false, timeoutLength = this.client.options.timeouts.realtimeRequestTimeout, tokenRequestCallbackTimeout = setTimeout(function () {\n tokenRequestCallbackTimeoutExpired = true;\n var msg = 'Token request callback timed out after ' + timeoutLength / 1000 + ' seconds';\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Auth.requestToken()', msg);\n _callback(new errorinfo_1.default(msg, 40170, 401));\n }, timeoutLength);\n tokenRequestCallback(tokenParams, function (err, tokenRequestOrDetails, contentType) {\n if (tokenRequestCallbackTimeoutExpired)\n return;\n clearTimeout(tokenRequestCallbackTimeout);\n if (err) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Auth.requestToken()', 'token request signing call returned error; err = ' + Utils.inspectError(err));\n _callback(normaliseAuthcallbackError(err));\n return;\n }\n /* the response from the callback might be a token string, a signed request or a token details */\n if (typeof tokenRequestOrDetails === 'string') {\n if (tokenRequestOrDetails.length === 0) {\n _callback(new errorinfo_1.default('Token string is empty', 40170, 401));\n }\n else if (tokenRequestOrDetails.length > MAX_TOKEN_LENGTH) {\n _callback(new errorinfo_1.default('Token string exceeded max permitted length (was ' + tokenRequestOrDetails.length + ' bytes)', 40170, 401));\n }\n else if (tokenRequestOrDetails === 'undefined' || tokenRequestOrDetails === 'null') {\n /* common failure mode with poorly-implemented authCallbacks */\n _callback(new errorinfo_1.default('Token string was literal null/undefined', 40170, 401));\n }\n else if (tokenRequestOrDetails[0] === '{' && !(contentType && contentType.indexOf('application/jwt') > -1)) {\n _callback(new errorinfo_1.default(\"Token was double-encoded; make sure you're not JSON-encoding an already encoded token request or details\", 40170, 401));\n }\n else {\n _callback(null, { token: tokenRequestOrDetails });\n }\n return;\n }\n if (typeof tokenRequestOrDetails !== 'object') {\n var msg = 'Expected token request callback to call back with a token string or token request/details object, but got a ' +\n typeof tokenRequestOrDetails;\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Auth.requestToken()', msg);\n _callback(new errorinfo_1.default(msg, 40170, 401));\n return;\n }\n var objectSize = JSON.stringify(tokenRequestOrDetails).length;\n if (objectSize > MAX_TOKEN_LENGTH && !authOptions.suppressMaxLengthCheck) {\n _callback(new errorinfo_1.default('Token request/details object exceeded max permitted stringified size (was ' + objectSize + ' bytes)', 40170, 401));\n return;\n }\n if ('issued' in tokenRequestOrDetails) {\n /* a tokenDetails object */\n _callback(null, tokenRequestOrDetails);\n return;\n }\n if (!('keyName' in tokenRequestOrDetails)) {\n var msg = 'Expected token request callback to call back with a token string, token request object, or token details object';\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Auth.requestToken()', msg);\n _callback(new errorinfo_1.default(msg, 40170, 401));\n return;\n }\n /* it's a token request, so make the request */\n tokenRequest(tokenRequestOrDetails, function (err, tokenResponse, headers, unpacked) {\n if (err) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Auth.requestToken()', 'token request API call returned error; err = ' + Utils.inspectError(err));\n _callback(normaliseAuthcallbackError(err));\n return;\n }\n if (!unpacked)\n tokenResponse = JSON.parse(tokenResponse);\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Auth.getToken()', 'token received');\n _callback(null, tokenResponse);\n });\n });\n };\n /**\n * Create and sign a token request based on the given options.\n * NOTE this can only be used when the key value is available locally.\n * Otherwise, signed token requests must be obtained from the key\n * owner (either using the token request callback or url).\n *\n * @param authOptions\n * an object containing the request options:\n * - key: the key to use. If not specified, a key passed in constructing\n * the Rest interface will be used\n *\n * - queryTime (optional) boolean indicating that the ably system should be\n * queried for the current time when none is specified explicitly\n *\n * - requestHeaders (optional, unsupported, for testing only) extra headers to add to the\n * requestToken request\n *\n * @param tokenParams\n * an object containing the parameters for the requested token:\n * - ttl: (optional) the requested life of the token in ms. If none is specified\n * a default of 1 hour is provided. The maximum lifetime is 24hours; any request\n * exceeding that lifetime will be rejected with an error.\n *\n * - capability: (optional) the capability to associate with the access token.\n * If none is specified, a token will be requested with all of the\n * capabilities of the specified key.\n *\n * - clientId: (optional) a client ID to associate with the token; if not\n * specified, a clientId passed in constructing the Rest interface will be used\n *\n * - timestamp: (optional) the time in ms since the epoch. If none is specified,\n * the system will be queried for a time value to use.\n *\n * @param callback\n */\n Auth.prototype.createTokenRequest = function (tokenParams, authOptions, callback) {\n var _this = this;\n /* shuffle and normalise arguments as necessary */\n if (typeof tokenParams == 'function' && !callback) {\n callback = tokenParams;\n authOptions = tokenParams = null;\n }\n else if (typeof authOptions == 'function' && !callback) {\n callback = authOptions;\n authOptions = null;\n }\n if (!callback && this.client.options.promises) {\n return Utils.promisify(this, 'createTokenRequest', arguments);\n }\n /* RSA9h: if authOptions passed in, they're used instead of stored, don't merge them */\n authOptions = authOptions || this.authOptions;\n tokenParams = tokenParams || Utils.copy(this.tokenParams);\n var key = authOptions.key;\n if (!key) {\n callback(new errorinfo_1.default('No key specified', 40101, 403));\n return;\n }\n var keyParts = key.split(':'), keyName = keyParts[0], keySecret = keyParts[1];\n if (!keySecret) {\n callback(new errorinfo_1.default('Invalid key specified', 40101, 403));\n return;\n }\n if (tokenParams.clientId === '') {\n callback(new errorinfo_1.default('clientId can’t be an empty string', 40012, 400));\n return;\n }\n if ('capability' in tokenParams) {\n tokenParams.capability = c14n(tokenParams.capability);\n }\n var request = Utils.mixin({ keyName: keyName }, tokenParams), clientId = tokenParams.clientId || '', ttl = tokenParams.ttl || '', capability = tokenParams.capability || '';\n (function (authoriseCb) {\n if (request.timestamp) {\n authoriseCb();\n return;\n }\n _this.getTimestamp(authOptions && authOptions.queryTime, function (err, time) {\n if (err) {\n callback(err);\n return;\n }\n request.timestamp = time;\n authoriseCb();\n });\n })(function () {\n /* nonce */\n /* NOTE: there is no expectation that the client\n * specifies the nonce; this is done by the library\n * However, this can be overridden by the client\n * simply for testing purposes. */\n var nonce = request.nonce || (request.nonce = random()), timestamp = request.timestamp;\n var signText = request.keyName + '\\n' + ttl + '\\n' + capability + '\\n' + clientId + '\\n' + timestamp + '\\n' + nonce + '\\n';\n /* mac */\n /* NOTE: there is no expectation that the client\n * specifies the mac; this is done by the library\n * However, this can be overridden by the client\n * simply for testing purposes. */\n request.mac = request.mac || hmac(signText, keySecret);\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Auth.getTokenRequest()', 'generated signed request');\n callback(null, request);\n });\n };\n /**\n * Get the auth query params to use for a websocket connection,\n * based on the current auth parameters\n */\n Auth.prototype.getAuthParams = function (callback) {\n if (this.method == 'basic')\n callback(null, { key: this.key });\n else\n this._ensureValidAuthCredentials(false, function (err, tokenDetails) {\n if (err) {\n callback(err);\n return;\n }\n if (!tokenDetails) {\n throw new Error('Auth.getAuthParams(): _ensureValidAuthCredentials returned no error or tokenDetails');\n }\n callback(null, { access_token: tokenDetails.token });\n });\n };\n /**\n * Get the authorization header to use for a REST or comet request,\n * based on the current auth parameters\n */\n Auth.prototype.getAuthHeaders = function (callback) {\n if (this.method == 'basic') {\n callback(null, { authorization: 'Basic ' + this.basicKey });\n }\n else {\n this._ensureValidAuthCredentials(false, function (err, tokenDetails) {\n if (err) {\n callback(err);\n return;\n }\n if (!tokenDetails) {\n throw new Error('Auth.getAuthParams(): _ensureValidAuthCredentials returned no error or tokenDetails');\n }\n callback(null, { authorization: 'Bearer ' + Utils.toBase64(tokenDetails.token) });\n });\n }\n };\n /**\n * Get the current time based on the local clock,\n * or if the option queryTime is true, return the server time.\n * The server time offset from the local time is stored so that\n * only one request to the server to get the time is ever needed\n */\n Auth.prototype.getTimestamp = function (queryTime, callback) {\n if (!this.isTimeOffsetSet() && (queryTime || this.authOptions.queryTime)) {\n this.client.time(callback);\n }\n else {\n callback(null, this.getTimestampUsingOffset());\n }\n };\n Auth.prototype.getTimestampUsingOffset = function () {\n return Utils.now() + (this.client.serverTimeOffset || 0);\n };\n Auth.prototype.isTimeOffsetSet = function () {\n return this.client.serverTimeOffset !== null;\n };\n Auth.prototype._saveBasicOptions = function (authOptions) {\n this.method = 'basic';\n this.key = authOptions.key;\n this.basicKey = Utils.toBase64(authOptions.key);\n this.authOptions = authOptions || {};\n if ('clientId' in authOptions) {\n this._userSetClientId(authOptions.clientId);\n }\n };\n Auth.prototype._saveTokenOptions = function (tokenParams, authOptions) {\n this.method = 'token';\n if (tokenParams) {\n /* We temporarily persist tokenParams.timestamp in case a new token needs\n * to be requested, then null it out in the callback of\n * _ensureValidAuthCredentials for RSA10g compliance */\n this.tokenParams = tokenParams;\n }\n if (authOptions) {\n /* normalise */\n if (authOptions.token) {\n /* options.token may contain a token string or, for convenience, a TokenDetails */\n authOptions.tokenDetails =\n typeof authOptions.token === 'string'\n ? { token: authOptions.token }\n : authOptions.token;\n }\n if (authOptions.tokenDetails) {\n this.tokenDetails = authOptions.tokenDetails;\n }\n if ('clientId' in authOptions) {\n this._userSetClientId(authOptions.clientId);\n }\n this.authOptions = authOptions;\n }\n };\n /* @param forceSupersede: force a new token request even if there's one in\n * progress, making all pending callbacks wait for the new one */\n Auth.prototype._ensureValidAuthCredentials = function (forceSupersede, callback) {\n var _this = this;\n var token = this.tokenDetails;\n if (token) {\n if (this._tokenClientIdMismatch(token.clientId)) {\n /* 403 to trigger a permanently failed client - RSA15c */\n callback(new errorinfo_1.default('Mismatch between clientId in token (' + token.clientId + ') and current clientId (' + this.clientId + ')', 40102, 403));\n return;\n }\n /* RSA4b1 -- if we have a server time offset set already, we can\n * automatically remove expired tokens. Else just use the cached token. If it is\n * expired Ably will tell us and we'll discard it then. */\n if (!this.isTimeOffsetSet() || !token.expires || token.expires >= this.getTimestampUsingOffset()) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Auth.getToken()', 'using cached token; expires = ' + token.expires);\n callback(null, token);\n return;\n }\n /* expired, so remove and fallthrough to getting a new one */\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Auth.getToken()', 'deleting expired token');\n this.tokenDetails = null;\n }\n (this.waitingForTokenRequest || (this.waitingForTokenRequest = multicaster_1.default.create())).push(callback);\n if (this.currentTokenRequestId !== null && !forceSupersede) {\n return;\n }\n /* Request a new token */\n var tokenRequestId = (this.currentTokenRequestId = getTokenRequestId());\n this.requestToken(this.tokenParams, this.authOptions, function (err, tokenResponse) {\n if (_this.currentTokenRequestId > tokenRequestId) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Auth._ensureValidAuthCredentials()', 'Discarding token request response; overtaken by newer one');\n return;\n }\n _this.currentTokenRequestId = null;\n var callbacks = _this.waitingForTokenRequest || noop;\n _this.waitingForTokenRequest = null;\n if (err) {\n callbacks(err);\n return;\n }\n callbacks(null, (_this.tokenDetails = tokenResponse));\n });\n };\n /* User-set: check types, '*' is disallowed, throw any errors */\n Auth.prototype._userSetClientId = function (clientId) {\n if (!(typeof clientId === 'string' || clientId === null)) {\n throw new errorinfo_1.default('clientId must be either a string or null', 40012, 400);\n }\n else if (clientId === '*') {\n throw new errorinfo_1.default('Can’t use \"*\" as a clientId as that string is reserved. (To change the default token request behaviour to use a wildcard clientId, instantiate the library with {defaultTokenParams: {clientId: \"*\"}}), or if calling authorize(), pass it in as a tokenParam: authorize({clientId: \"*\"}, authOptions)', 40012, 400);\n }\n else {\n var err = this._uncheckedSetClientId(clientId);\n if (err)\n throw err;\n }\n };\n /* Ably-set: no typechecking, '*' is allowed but not set on this.clientId), return errors to the caller */\n Auth.prototype._uncheckedSetClientId = function (clientId) {\n if (this._tokenClientIdMismatch(clientId)) {\n /* Should never happen in normal circumstances as realtime should\n * recognise mismatch and return an error */\n var msg = 'Unexpected clientId mismatch: client has ' + this.clientId + ', requested ' + clientId;\n var err = new errorinfo_1.default(msg, 40102, 401);\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Auth._uncheckedSetClientId()', msg);\n return err;\n }\n else {\n /* RSA7a4: if options.clientId is provided and is not\n * null, it overrides defaultTokenParams.clientId */\n this.clientId = this.tokenParams.clientId = clientId;\n return null;\n }\n };\n Auth.prototype._tokenClientIdMismatch = function (tokenClientId) {\n return !!(this.clientId &&\n this.clientId !== '*' &&\n tokenClientId &&\n tokenClientId !== '*' &&\n this.clientId !== tokenClientId);\n };\n Auth.isTokenErr = function (error) {\n return error.code && error.code >= 40140 && error.code < 40150;\n };\n Auth.prototype.revokeTokens = function (specifiers, optionsOrCallbackArg, callbackArg) {\n if (useTokenAuth(this.client.options)) {\n throw new errorinfo_1.default('Cannot revoke tokens when using token auth', 40162, 401);\n }\n var keyName = this.client.options.keyName;\n var resolvedOptions;\n if (typeof optionsOrCallbackArg === 'function') {\n callbackArg = optionsOrCallbackArg;\n resolvedOptions = {};\n }\n else {\n resolvedOptions = optionsOrCallbackArg !== null && optionsOrCallbackArg !== void 0 ? optionsOrCallbackArg : {};\n }\n if (callbackArg === undefined) {\n if (this.client.options.promises) {\n return Utils.promisify(this, 'revokeTokens', [specifiers, resolvedOptions]);\n }\n callbackArg = noop;\n }\n var callback = callbackArg;\n var requestBodyDTO = tslib_1.__assign({ targets: specifiers.map(function (specifier) { return \"\".concat(specifier.type, \":\").concat(specifier.value); }) }, resolvedOptions);\n var format = this.client.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, headers = Utils.defaultPostHeaders(this.client.options, format);\n if (this.client.options.headers)\n Utils.mixin(headers, this.client.options.headers);\n var requestBody = Utils.encodeBody(requestBodyDTO, format);\n resource_1.default.post(this.client, \"/keys/\".concat(keyName, \"/revokeTokens\"), requestBody, headers, { newBatchResponse: 'true' }, null, function (err, body, headers, unpacked) {\n if (err) {\n // TODO remove this type assertion after fixing https://github.com/ably/ably-js/issues/1405\n callback(err);\n return;\n }\n var batchResult = (unpacked ? body : Utils.decodeBody(body, format));\n callback(null, batchResult);\n });\n };\n return Auth;\n}());\nexports.default = Auth;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar HttpMethods;\n(function (HttpMethods) {\n HttpMethods[\"Get\"] = \"get\";\n HttpMethods[\"Delete\"] = \"delete\";\n HttpMethods[\"Post\"] = \"post\";\n HttpMethods[\"Put\"] = \"put\";\n HttpMethods[\"Patch\"] = \"patch\";\n})(HttpMethods || (HttpMethods = {}));\nexports.default = HttpMethods;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpPaginatedResponse = exports.PaginatedResult = void 0;\nvar tslib_1 = __webpack_require__(0);\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar resource_1 = tslib_1.__importDefault(__webpack_require__(15));\nvar HttpStatusCodes_1 = tslib_1.__importDefault(__webpack_require__(14));\nfunction getRelParams(linkUrl) {\n var urlMatch = linkUrl.match(/^\\.\\/(\\w+)\\?(.*)$/);\n return urlMatch && urlMatch[2] && Utils.parseQueryString(urlMatch[2]);\n}\nfunction parseRelLinks(linkHeader) {\n if (typeof linkHeader == 'string')\n linkHeader = linkHeader.split(',');\n var relParams = {};\n for (var i = 0; i < linkHeader.length; i++) {\n var linkMatch = linkHeader[i].match(/^\\s*<(.+)>;\\s*rel=\"(\\w+)\"$/);\n if (linkMatch) {\n var params = getRelParams(linkMatch[1]);\n if (params)\n relParams[linkMatch[2]] = params;\n }\n }\n return relParams;\n}\nfunction returnErrOnly(err, body, useHPR) {\n /* If using httpPaginatedResponse, errors from Ably are returned as part of\n * the HPR, only do callback(err) for network errors etc. which don't\n * return a body and/or have no ably-originated error code (non-numeric\n * error codes originate from node) */\n return !(useHPR && (body || typeof err.code === 'number'));\n}\nvar PaginatedResource = /** @class */ (function () {\n function PaginatedResource(rest, path, headers, envelope, bodyHandler, useHttpPaginatedResponse) {\n this.rest = rest;\n this.path = path;\n this.headers = headers;\n this.envelope = envelope !== null && envelope !== void 0 ? envelope : null;\n this.bodyHandler = bodyHandler;\n this.useHttpPaginatedResponse = useHttpPaginatedResponse || false;\n }\n PaginatedResource.prototype.get = function (params, callback) {\n var _this = this;\n resource_1.default.get(this.rest, this.path, this.headers, params, this.envelope, function (err, body, headers, unpacked, statusCode) {\n _this.handlePage(err, body, headers, unpacked, statusCode, callback);\n });\n };\n PaginatedResource.prototype.delete = function (params, callback) {\n var _this = this;\n resource_1.default.delete(this.rest, this.path, this.headers, params, this.envelope, function (err, body, headers, unpacked, statusCode) {\n _this.handlePage(err, body, headers, unpacked, statusCode, callback);\n });\n };\n PaginatedResource.prototype.post = function (params, body, callback) {\n var _this = this;\n resource_1.default.post(this.rest, this.path, body, this.headers, params, this.envelope, function (err, responseBody, headers, unpacked, statusCode) {\n if (callback) {\n _this.handlePage(err, responseBody, headers, unpacked, statusCode, callback);\n }\n });\n };\n PaginatedResource.prototype.put = function (params, body, callback) {\n var _this = this;\n resource_1.default.put(this.rest, this.path, body, this.headers, params, this.envelope, function (err, responseBody, headers, unpacked, statusCode) {\n if (callback) {\n _this.handlePage(err, responseBody, headers, unpacked, statusCode, callback);\n }\n });\n };\n PaginatedResource.prototype.patch = function (params, body, callback) {\n var _this = this;\n resource_1.default.patch(this.rest, this.path, body, this.headers, params, this.envelope, function (err, responseBody, headers, unpacked, statusCode) {\n if (callback) {\n _this.handlePage(err, responseBody, headers, unpacked, statusCode, callback);\n }\n });\n };\n PaginatedResource.prototype.handlePage = function (err, body, headers, unpacked, statusCode, callback) {\n if (err && returnErrOnly(err, body, this.useHttpPaginatedResponse)) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'PaginatedResource.handlePage()', 'Unexpected error getting resource: err = ' + Utils.inspectError(err));\n callback === null || callback === void 0 ? void 0 : callback(err);\n return;\n }\n var items, linkHeader, relParams;\n try {\n items = statusCode == HttpStatusCodes_1.default.NoContent ? [] : this.bodyHandler(body, headers || {}, unpacked);\n }\n catch (e) {\n /* If we got an error, the failure to parse the body is almost certainly\n * due to that, so callback with that in preference over the parse error */\n callback === null || callback === void 0 ? void 0 : callback(err || e);\n return;\n }\n if (headers && (linkHeader = headers['Link'] || headers['link'])) {\n relParams = parseRelLinks(linkHeader);\n }\n if (this.useHttpPaginatedResponse) {\n callback(null, new HttpPaginatedResponse(this, items, headers || {}, statusCode, relParams, err));\n }\n else {\n callback(null, new PaginatedResult(this, items, relParams));\n }\n };\n return PaginatedResource;\n}());\nvar PaginatedResult = /** @class */ (function () {\n function PaginatedResult(resource, items, relParams) {\n var _this = this;\n this.resource = resource;\n this.items = items;\n var self = this;\n if (relParams) {\n if ('first' in relParams) {\n this.first = function (callback) {\n if (!callback && self.resource.rest.options.promises) {\n return Utils.promisify(self, 'first', []);\n }\n self.get(relParams.first, callback);\n };\n }\n if ('current' in relParams) {\n this.current = function (callback) {\n if (!callback && self.resource.rest.options.promises) {\n return Utils.promisify(self, 'current', []);\n }\n self.get(relParams.current, callback);\n };\n }\n this.next = function (callback) {\n if (!callback && self.resource.rest.options.promises) {\n return Utils.promisify(self, 'next', []);\n }\n if ('next' in relParams) {\n self.get(relParams.next, callback);\n }\n else {\n callback(null, null);\n }\n };\n this.hasNext = function () {\n return 'next' in relParams;\n };\n this.isLast = function () {\n var _a;\n return !((_a = _this.hasNext) === null || _a === void 0 ? void 0 : _a.call(_this));\n };\n }\n }\n /* We assume that only the initial request can be a POST, and that accessing\n * the rest of a multipage set of results can always be done with GET */\n PaginatedResult.prototype.get = function (params, callback) {\n var res = this.resource;\n resource_1.default.get(res.rest, res.path, res.headers, params, res.envelope, function (err, body, headers, unpacked, statusCode) {\n res.handlePage(err, body, headers, unpacked, statusCode, callback);\n });\n };\n return PaginatedResult;\n}());\nexports.PaginatedResult = PaginatedResult;\nvar HttpPaginatedResponse = /** @class */ (function (_super) {\n tslib_1.__extends(HttpPaginatedResponse, _super);\n function HttpPaginatedResponse(resource, items, headers, statusCode, relParams, err) {\n var _this = _super.call(this, resource, items, relParams) || this;\n _this.statusCode = statusCode;\n _this.success = statusCode < 300 && statusCode >= 200;\n _this.headers = headers;\n _this.errorCode = err && err.code;\n _this.errorMessage = err && err.message;\n return _this;\n }\n HttpPaginatedResponse.prototype.toJSON = function () {\n return {\n items: this.items,\n statusCode: this.statusCode,\n success: this.success,\n headers: this.headers,\n errorCode: this.errorCode,\n errorMessage: this.errorMessage,\n };\n };\n return HttpPaginatedResponse;\n}(PaginatedResult));\nexports.HttpPaginatedResponse = HttpPaginatedResponse;\nexports.default = PaginatedResource;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isRetriable = void 0;\nvar tslib_1 = __webpack_require__(0);\nvar errorinfo_1 = tslib_1.__importDefault(__webpack_require__(4));\nvar ConnectionErrorCodes = {\n DISCONNECTED: 80003,\n SUSPENDED: 80002,\n FAILED: 80000,\n CLOSING: 80017,\n CLOSED: 80017,\n UNKNOWN_CONNECTION_ERR: 50002,\n UNKNOWN_CHANNEL_ERR: 50001,\n};\nvar ConnectionErrors = {\n disconnected: function () {\n return errorinfo_1.default.fromValues({\n statusCode: 400,\n code: ConnectionErrorCodes.DISCONNECTED,\n message: 'Connection to server temporarily unavailable',\n });\n },\n suspended: function () {\n return errorinfo_1.default.fromValues({\n statusCode: 400,\n code: ConnectionErrorCodes.SUSPENDED,\n message: 'Connection to server unavailable',\n });\n },\n failed: function () {\n return errorinfo_1.default.fromValues({\n statusCode: 400,\n code: ConnectionErrorCodes.FAILED,\n message: 'Connection failed or disconnected by server',\n });\n },\n closing: function () {\n return errorinfo_1.default.fromValues({\n statusCode: 400,\n code: ConnectionErrorCodes.CLOSING,\n message: 'Connection closing',\n });\n },\n closed: function () {\n return errorinfo_1.default.fromValues({\n statusCode: 400,\n code: ConnectionErrorCodes.CLOSED,\n message: 'Connection closed',\n });\n },\n unknownConnectionErr: function () {\n return errorinfo_1.default.fromValues({\n statusCode: 500,\n code: ConnectionErrorCodes.UNKNOWN_CONNECTION_ERR,\n message: 'Internal connection error',\n });\n },\n unknownChannelErr: function () {\n return errorinfo_1.default.fromValues({\n statusCode: 500,\n code: ConnectionErrorCodes.UNKNOWN_CONNECTION_ERR,\n message: 'Internal channel error',\n });\n },\n};\nfunction isRetriable(err) {\n if (!err.statusCode || !err.code || err.statusCode >= 500) {\n return true;\n }\n return Object.values(ConnectionErrorCodes).includes(err.code);\n}\nexports.isRetriable = isRetriable;\nexports.default = ConnectionErrors;\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar XHRStates;\n(function (XHRStates) {\n XHRStates[XHRStates[\"REQ_SEND\"] = 0] = \"REQ_SEND\";\n XHRStates[XHRStates[\"REQ_RECV\"] = 1] = \"REQ_RECV\";\n XHRStates[XHRStates[\"REQ_RECV_POLL\"] = 2] = \"REQ_RECV_POLL\";\n XHRStates[XHRStates[\"REQ_RECV_STREAM\"] = 3] = \"REQ_RECV_STREAM\";\n})(XHRStates || (XHRStates = {}));\nexports.default = XHRStates;\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n;(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(6), __webpack_require__(5), __webpack_require__(58), __webpack_require__(11), __webpack_require__(40), __webpack_require__(32), __webpack_require__(25), __webpack_require__(27), __webpack_require__(28), __webpack_require__(59), __webpack_require__(60));\n\t}\n\telse {}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar Multicaster = /** @class */ (function () {\n // Private constructor; use static Multicaster.create instead\n function Multicaster(members) {\n this.members = members || [];\n }\n Multicaster.prototype.call = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n for (var _a = 0, _b = this.members; _a < _b.length; _a++) {\n var member = _b[_a];\n if (member) {\n try {\n member.apply(void 0, args);\n }\n catch (e) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Multicaster multiple callback handler', 'Unexpected exception: ' + e + '; stack = ' + e.stack);\n }\n }\n }\n };\n Multicaster.prototype.push = function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n (_a = this.members).push.apply(_a, args);\n };\n Multicaster.create = function (members) {\n var instance = new Multicaster(members);\n return Object.assign(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return instance.call.apply(instance, args);\n }, {\n push: function (fn) { return instance.push(fn); },\n });\n };\n return Multicaster;\n}());\nexports.default = Multicaster;\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n;(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(6));\n\t}\n\telse {}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar protocolmessage_1 = tslib_1.__importDefault(__webpack_require__(10));\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar eventemitter_1 = tslib_1.__importDefault(__webpack_require__(7));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar connectionerrors_1 = tslib_1.__importDefault(__webpack_require__(21));\nvar errorinfo_1 = tslib_1.__importDefault(__webpack_require__(4));\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nvar actions = protocolmessage_1.default.Action;\nvar closeMessage = protocolmessage_1.default.fromValues({ action: actions.CLOSE });\nvar disconnectMessage = protocolmessage_1.default.fromValues({ action: actions.DISCONNECT });\n/*\n * Transport instances inherit from EventEmitter and emit the following events:\n *\n * event name data\n * closed error\n * failed error\n * disposed\n * connected null error, connectionSerial, connectionId, connectionDetails\n * event channel message object\n */\nvar Transport = /** @class */ (function (_super) {\n tslib_1.__extends(Transport, _super);\n function Transport(connectionManager, auth, params, forceJsonProtocol) {\n var _this = _super.call(this) || this;\n if (forceJsonProtocol) {\n params.format = undefined;\n params.heartbeats = true;\n }\n _this.connectionManager = connectionManager;\n connectionManager.registerProposedTransport(_this);\n _this.auth = auth;\n _this.params = params;\n _this.timeouts = params.options.timeouts;\n _this.format = params.format;\n _this.isConnected = false;\n _this.isFinished = false;\n _this.isDisposed = false;\n _this.maxIdleInterval = null;\n _this.idleTimer = null;\n _this.lastActivity = null;\n return _this;\n }\n Transport.prototype.connect = function () { };\n Transport.prototype.close = function () {\n if (this.isConnected) {\n this.requestClose();\n }\n this.finish('closed', connectionerrors_1.default.closed());\n };\n Transport.prototype.disconnect = function (err) {\n /* Used for network/transport issues that need to result in the transport\n * being disconnected, but should not transition the connection to 'failed' */\n if (this.isConnected) {\n this.requestDisconnect();\n }\n this.finish('disconnected', err || connectionerrors_1.default.disconnected());\n };\n Transport.prototype.fail = function (err) {\n /* Used for client-side-detected fatal connection issues */\n if (this.isConnected) {\n this.requestDisconnect();\n }\n this.finish('failed', err || connectionerrors_1.default.failed());\n };\n Transport.prototype.finish = function (event, err) {\n var _a;\n if (this.isFinished) {\n return;\n }\n this.isFinished = true;\n this.isConnected = false;\n this.maxIdleInterval = null;\n clearTimeout((_a = this.idleTimer) !== null && _a !== void 0 ? _a : undefined);\n this.idleTimer = null;\n this.emit(event, err);\n this.dispose();\n };\n Transport.prototype.onProtocolMessage = function (message) {\n if (logger_1.default.shouldLog(logger_1.default.LOG_MICRO)) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Transport.onProtocolMessage()', 'received on ' +\n this.shortName +\n ': ' +\n protocolmessage_1.default.stringify(message) +\n '; connectionId = ' +\n this.connectionManager.connectionId);\n }\n this.onActivity();\n switch (message.action) {\n case actions.HEARTBEAT:\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Transport.onProtocolMessage()', this.shortName + ' heartbeat; connectionId = ' + this.connectionManager.connectionId);\n this.emit('heartbeat', message.id);\n break;\n case actions.CONNECTED:\n this.onConnect(message);\n this.emit('connected', message.error, message.connectionId, message.connectionDetails, message);\n break;\n case actions.CLOSED:\n this.onClose(message);\n break;\n case actions.DISCONNECTED:\n this.onDisconnect(message);\n break;\n case actions.ACK:\n this.emit('ack', message.msgSerial, message.count);\n break;\n case actions.NACK:\n this.emit('nack', message.msgSerial, message.count, message.error);\n break;\n case actions.SYNC:\n this.connectionManager.onChannelMessage(message, this);\n break;\n case actions.ACTIVATE:\n // Ignored.\n break;\n case actions.AUTH:\n this.auth.authorize(function (err) {\n if (err) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Transport.onProtocolMessage()', 'Ably requested re-authentication, but unable to obtain a new token: ' + Utils.inspectError(err));\n }\n });\n break;\n case actions.ERROR:\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Transport.onProtocolMessage()', 'received error action; connectionId = ' +\n this.connectionManager.connectionId +\n '; err = ' +\n platform_1.default.Config.inspect(message.error) +\n (message.channel ? ', channel: ' + message.channel : ''));\n if (message.channel === undefined) {\n this.onFatalError(message);\n break;\n }\n /* otherwise it's a channel-specific error, so handle it in the channel */\n this.connectionManager.onChannelMessage(message, this);\n break;\n default:\n /* all other actions are channel-specific */\n this.connectionManager.onChannelMessage(message, this);\n }\n };\n Transport.prototype.onConnect = function (message) {\n this.isConnected = true;\n if (!message.connectionDetails) {\n throw new Error('Transport.onConnect(): Connect message recieved without connectionDetails');\n }\n var maxPromisedIdle = message.connectionDetails.maxIdleInterval;\n if (maxPromisedIdle) {\n this.maxIdleInterval = maxPromisedIdle + this.timeouts.realtimeRequestTimeout;\n this.onActivity();\n }\n /* else Realtime declines to guarantee any maximum idle interval - CD2h */\n };\n Transport.prototype.onDisconnect = function (message) {\n /* Used for when the server has disconnected the client (usually with a\n * DISCONNECTED action) */\n var err = message && message.error;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Transport.onDisconnect()', 'err = ' + Utils.inspectError(err));\n this.finish('disconnected', err);\n };\n Transport.prototype.onFatalError = function (message) {\n /* On receipt of a fatal connection error, we can assume that the server\n * will close the connection and the transport, and do not need to request\n * a disconnection - RTN15i */\n var err = message && message.error;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Transport.onFatalError()', 'err = ' + Utils.inspectError(err));\n this.finish('failed', err);\n };\n Transport.prototype.onClose = function (message) {\n var err = message && message.error;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Transport.onClose()', 'err = ' + Utils.inspectError(err));\n this.finish('closed', err);\n };\n Transport.prototype.requestClose = function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Transport.requestClose()', '');\n this.send(closeMessage);\n };\n Transport.prototype.requestDisconnect = function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Transport.requestDisconnect()', '');\n this.send(disconnectMessage);\n };\n Transport.prototype.ping = function (id) {\n var msg = { action: protocolmessage_1.default.Action.HEARTBEAT };\n if (id)\n msg.id = id;\n this.send(protocolmessage_1.default.fromValues(msg));\n };\n Transport.prototype.dispose = function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Transport.dispose()', '');\n this.isDisposed = true;\n this.off();\n };\n Transport.prototype.onActivity = function () {\n if (!this.maxIdleInterval) {\n return;\n }\n this.lastActivity = this.connectionManager.lastActivity = Utils.now();\n this.setIdleTimer(this.maxIdleInterval + 100);\n };\n Transport.prototype.setIdleTimer = function (timeout) {\n var _this = this;\n if (!this.idleTimer) {\n this.idleTimer = setTimeout(function () {\n _this.onIdleTimerExpire();\n }, timeout);\n }\n };\n Transport.prototype.onIdleTimerExpire = function () {\n if (!this.lastActivity || !this.maxIdleInterval) {\n throw new Error('Transport.onIdleTimerExpire(): lastActivity/maxIdleInterval not set');\n }\n this.idleTimer = null;\n var sinceLast = Utils.now() - this.lastActivity;\n var timeRemaining = this.maxIdleInterval - sinceLast;\n if (timeRemaining <= 0) {\n var msg = 'No activity seen from realtime in ' + sinceLast + 'ms; assuming connection has dropped';\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Transport.onIdleTimerExpire()', msg);\n this.disconnect(new errorinfo_1.default(msg, 80003, 408));\n }\n else {\n this.setIdleTimer(timeRemaining + 100);\n }\n };\n Transport.tryConnect = function (transportCtor, connectionManager, auth, transportParams, callback) {\n var transport = new transportCtor(connectionManager, auth, transportParams);\n var transportAttemptTimer;\n var errorCb = function (err) {\n clearTimeout(transportAttemptTimer);\n callback({ event: this.event, error: err });\n };\n var realtimeRequestTimeout = connectionManager.options.timeouts.realtimeRequestTimeout;\n transportAttemptTimer = setTimeout(function () {\n transport.off(['preconnect', 'disconnected', 'failed']);\n transport.dispose();\n errorCb.call({ event: 'disconnected' }, new errorinfo_1.default('Timeout waiting for transport to indicate itself viable', 50000, 500));\n }, realtimeRequestTimeout);\n transport.on(['failed', 'disconnected'], errorCb);\n transport.on('preconnect', function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Transport.tryConnect()', 'viable transport ' + transport);\n clearTimeout(transportAttemptTimer);\n transport.off(['failed', 'disconnected'], errorCb);\n callback(null, transport);\n });\n transport.connect();\n };\n return Transport;\n}(eventemitter_1.default));\nexports.default = Transport;\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n;(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(6), __webpack_require__(40), __webpack_require__(25));\n\t}\n\telse {}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n;(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(6), __webpack_require__(27));\n\t}\n\telse {}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Request = exports.createRequest = void 0;\nvar tslib_1 = __webpack_require__(0);\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar comettransport_1 = tslib_1.__importDefault(__webpack_require__(12));\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nvar eventemitter_1 = tslib_1.__importDefault(__webpack_require__(7));\nvar errorinfo_1 = __webpack_require__(4);\nvar defaults_1 = tslib_1.__importDefault(__webpack_require__(8));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar XHRStates_1 = tslib_1.__importDefault(__webpack_require__(22));\n// Workaround for salesforce lightning locker compatibility\nvar globalObject = Utils.getGlobalObject();\nvar noop = function () { };\n/* Can't just use window.Ably, as that won't exist if using the commonjs version. */\nvar _ = (globalObject._ablyjs_jsonp = {});\n/* express strips out parantheses from the callback!\n * Kludge to still alow its responses to work, while not keeping the\n * function form for normal use and not cluttering window.Ably\n * https://github.com/expressjs/express/blob/5b4d4b4ab1324743534fbcd4709f4e75bb4b4e9d/lib/response.js#L305\n */\n_._ = function (id) {\n return _['_' + id] || noop;\n};\nvar idCounter = 1;\nvar shortName = 'jsonp';\nfunction createRequest(uri, headers, params, body, requestMode, timeouts, method) {\n /* JSONP requests are used either with the context being a realtime\n * transport, or with timeouts passed in (for when used by a rest client),\n * or completely standalone. Use the appropriate timeouts in each case */\n timeouts = timeouts || defaults_1.default.TIMEOUTS;\n return new Request(undefined, uri, headers, Utils.copy(params), body, requestMode, timeouts, method);\n}\nexports.createRequest = createRequest;\nvar JSONPTransport = /** @class */ (function (_super) {\n tslib_1.__extends(JSONPTransport, _super);\n function JSONPTransport(connectionManager, auth, params) {\n var _this = _super.call(this, connectionManager, auth, params) || this;\n _this.shortName = shortName;\n params.stream = false;\n return _this;\n }\n JSONPTransport.isAvailable = function () {\n return platform_1.default.Config.jsonpSupported && platform_1.default.Config.allowComet;\n };\n JSONPTransport.prototype.toString = function () {\n return 'JSONPTransport; uri=' + this.baseUri + '; isConnected=' + this.isConnected;\n };\n JSONPTransport.prototype.createRequest = function (uri, headers, params, body, requestMode, timeouts, method) {\n /* JSONP requests are used either with the context being a realtime\n * transport, or with timeouts passed in (for when used by a rest client),\n * or completely standalone. Use the appropriate timeouts in each case */\n timeouts = (this === null || this === void 0 ? void 0 : this.timeouts) || timeouts || defaults_1.default.TIMEOUTS;\n return createRequest(uri, headers, params, body, requestMode, timeouts, method);\n };\n return JSONPTransport;\n}(comettransport_1.default));\nvar Request = /** @class */ (function (_super) {\n tslib_1.__extends(Request, _super);\n function Request(id, uri, headers, params, body, requestMode, timeouts, method) {\n var _this = _super.call(this) || this;\n if (id === undefined)\n id = idCounter++;\n _this.id = id;\n _this.uri = uri;\n _this.params = params || {};\n _this.params.rnd = Utils.cheapRandStr();\n if (headers) {\n /* JSONP doesn't allow headers. Cherry-pick a couple to turn into qs params */\n if (headers['X-Ably-Version'])\n _this.params.v = headers['X-Ably-Version'];\n if (headers['X-Ably-Lib'])\n _this.params.lib = headers['X-Ably-Lib'];\n }\n _this.body = body;\n _this.method = method;\n _this.requestMode = requestMode;\n _this.timeouts = timeouts;\n _this.requestComplete = false;\n return _this;\n }\n Request.prototype.exec = function () {\n var _this = this;\n var id = this.id, body = this.body, method = this.method, uri = this.uri, params = this.params;\n params.callback = '_ablyjs_jsonp._(' + id + ')';\n params.envelope = 'jsonp';\n if (body) {\n params.body = body;\n }\n if (method && method !== 'get') {\n params.method = method;\n }\n var script = (this.script = document.createElement('script'));\n var src = uri + Utils.toQueryString(params);\n script.src = src;\n if (script.src.split('/').slice(-1)[0] !== src.split('/').slice(-1)[0]) {\n /* The src has been truncated. Can't abort, but can at least emit an\n * error so the user knows what's gone wrong. (Can't compare strings\n * directly as src may have a port, script.src won't) */\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'JSONP Request.exec()', 'Warning: the browser appears to have truncated the script URI. This will likely result in the request failing due to an unparseable body param');\n }\n script.async = true;\n script.type = 'text/javascript';\n script.charset = 'UTF-8';\n script.onerror = function (err) {\n _this.complete(new errorinfo_1.PartialErrorInfo('JSONP script error (event: ' + platform_1.default.Config.inspect(err) + ')', null, 400));\n };\n _['_' + id] = function (message) {\n if (message.statusCode) {\n /* Handle as enveloped jsonp, as all jsonp transport uses should be */\n var response = message.response;\n if (message.statusCode == 204) {\n _this.complete(null, null, null, message.statusCode);\n }\n else if (!response) {\n _this.complete(new errorinfo_1.PartialErrorInfo('Invalid server response: no envelope detected', null, 500));\n }\n else if (message.statusCode < 400 || Utils.isArray(response)) {\n /* If response is an array, it's an array of protocol messages -- even if\n * it contains an error action (hence the nonsuccess statuscode), we can\n * consider the request to have succeeded, just pass it on to\n * onProtocolMessage to decide what to do */\n _this.complete(null, response, message.headers, message.statusCode);\n }\n else {\n var err = response.error || new errorinfo_1.PartialErrorInfo('Error response received from server', null, message.statusCode);\n _this.complete(err);\n }\n }\n else {\n /* Handle as non-enveloped -- as will be eg from a customer's authUrl server */\n _this.complete(null, message);\n }\n };\n var timeout = this.requestMode == XHRStates_1.default.REQ_SEND ? this.timeouts.httpRequestTimeout : this.timeouts.recvTimeout;\n this.timer = setTimeout(this.abort.bind(this), timeout);\n var head = document.getElementsByTagName('head')[0];\n head.insertBefore(script, head.firstChild);\n };\n Request.prototype.complete = function (err, body, headers, statusCode) {\n headers = headers || {};\n if (!this.requestComplete) {\n this.requestComplete = true;\n var contentType = void 0;\n if (body) {\n contentType = typeof body == 'string' ? 'text/plain' : 'application/json';\n headers['content-type'] = contentType;\n this.emit('data', body);\n }\n this.emit('complete', err, body, headers, /* unpacked: */ true, statusCode);\n this.dispose();\n }\n };\n Request.prototype.abort = function () {\n this.dispose();\n };\n Request.prototype.dispose = function () {\n var timer = this.timer;\n if (timer) {\n clearTimeout(timer);\n this.timer = null;\n }\n var script = this.script;\n if (script.parentNode)\n script.parentNode.removeChild(script);\n delete _[this.id];\n this.emit('disposed');\n };\n return Request;\n}(eventemitter_1.default));\nexports.Request = Request;\nfunction default_1(connectionManager) {\n globalObject.JSONPTransport = JSONPTransport;\n if (JSONPTransport.isAvailable()) {\n connectionManager.supportedTransports[shortName] = JSONPTransport;\n }\n return JSONPTransport;\n}\nexports.default = default_1;\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar defaults_1 = tslib_1.__importDefault(__webpack_require__(8));\nvar auth_1 = tslib_1.__importDefault(__webpack_require__(18));\nvar push_1 = tslib_1.__importDefault(__webpack_require__(46));\nvar paginatedresource_1 = tslib_1.__importDefault(__webpack_require__(20));\nvar channel_1 = tslib_1.__importDefault(__webpack_require__(33));\nvar errorinfo_1 = tslib_1.__importDefault(__webpack_require__(4));\nvar stats_1 = tslib_1.__importDefault(__webpack_require__(49));\nvar HttpMethods_1 = tslib_1.__importDefault(__webpack_require__(19));\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nvar message_1 = tslib_1.__importDefault(__webpack_require__(9));\nvar presencemessage_1 = tslib_1.__importDefault(__webpack_require__(16));\nvar resource_1 = tslib_1.__importDefault(__webpack_require__(15));\nvar noop = function () { };\nvar Rest = /** @class */ (function () {\n function Rest(options) {\n if (!options) {\n var msg = 'no options provided';\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Rest()', msg);\n throw new Error(msg);\n }\n var optionsObj = defaults_1.default.objectifyOptions(options);\n if (optionsObj.log) {\n logger_1.default.setLog(optionsObj.log.level, optionsObj.log.handler);\n logger_1.default.deprecated('The `log` client option', 'Equivalent functionality is provided by the `logLevel` and `logHandler` client options. Update your client options code of the form `{ log: { level: logLevel, handler: logHandler } }` to instead be `{ logLevel, logHandler }`.');\n }\n else {\n logger_1.default.setLog(optionsObj.logLevel, optionsObj.logHandler);\n }\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Rest()', 'initialized with clientOptions ' + platform_1.default.Config.inspect(options));\n var normalOptions = (this.options = defaults_1.default.normaliseOptions(optionsObj));\n /* process options */\n if (normalOptions.key) {\n var keyMatch = normalOptions.key.match(/^([^:\\s]+):([^:.\\s]+)$/);\n if (!keyMatch) {\n var msg = 'invalid key parameter';\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Rest()', msg);\n throw new errorinfo_1.default(msg, 40400, 404);\n }\n normalOptions.keyName = keyMatch[1];\n normalOptions.keySecret = keyMatch[2];\n }\n if ('clientId' in normalOptions) {\n if (!(typeof normalOptions.clientId === 'string' || normalOptions.clientId === null))\n throw new errorinfo_1.default('clientId must be either a string or null', 40012, 400);\n else if (normalOptions.clientId === '*')\n throw new errorinfo_1.default('Can’t use \"*\" as a clientId as that string is reserved. (To change the default token request behaviour to use a wildcard clientId, use {defaultTokenParams: {clientId: \"*\"}})', 40012, 400);\n }\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Rest()', 'started; version = ' + defaults_1.default.version);\n this.baseUri = this.authority = function (host) {\n return defaults_1.default.getHttpScheme(normalOptions) + host + ':' + defaults_1.default.getPort(normalOptions, false);\n };\n this._currentFallback = null;\n this.serverTimeOffset = null;\n this.http = new platform_1.default.Http(normalOptions);\n this.auth = new auth_1.default(this, normalOptions);\n this.channels = new Channels(this);\n this.push = new push_1.default(this);\n }\n Rest.prototype.stats = function (params, callback) {\n /* params and callback are optional; see if params contains the callback */\n if (callback === undefined) {\n if (typeof params == 'function') {\n callback = params;\n params = null;\n }\n else {\n if (this.options.promises) {\n return Utils.promisify(this, 'stats', [params]);\n }\n callback = noop;\n }\n }\n var headers = Utils.defaultGetHeaders(this.options), format = this.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, envelope = this.http.supportsLinkHeaders ? undefined : format;\n if (this.options.headers)\n Utils.mixin(headers, this.options.headers);\n new paginatedresource_1.default(this, '/stats', headers, envelope, function (body, headers, unpacked) {\n var statsValues = unpacked ? body : JSON.parse(body);\n for (var i = 0; i < statsValues.length; i++)\n statsValues[i] = stats_1.default.fromValues(statsValues[i]);\n return statsValues;\n }).get(params, callback);\n };\n Rest.prototype.time = function (params, callback) {\n var _this = this;\n /* params and callback are optional; see if params contains the callback */\n if (callback === undefined) {\n if (typeof params == 'function') {\n callback = params;\n params = null;\n }\n else {\n if (this.options.promises) {\n return Utils.promisify(this, 'time', [params]);\n }\n }\n }\n var _callback = callback || noop;\n var headers = Utils.defaultGetHeaders(this.options);\n if (this.options.headers)\n Utils.mixin(headers, this.options.headers);\n var timeUri = function (host) {\n return _this.authority(host) + '/time';\n };\n this.http.do(HttpMethods_1.default.Get, this, timeUri, headers, null, params, function (err, res, headers, unpacked) {\n if (err) {\n _callback(err);\n return;\n }\n if (!unpacked)\n res = JSON.parse(res);\n var time = res[0];\n if (!time) {\n _callback(new errorinfo_1.default('Internal error (unexpected result type from GET /time)', 50000, 500));\n return;\n }\n /* calculate time offset only once for this device by adding to the prototype */\n _this.serverTimeOffset = time - Utils.now();\n _callback(null, time);\n });\n };\n Rest.prototype.request = function (method, path, params, body, customHeaders, callback) {\n var useBinary = this.options.useBinaryProtocol, encoder = useBinary ? platform_1.default.Config.msgpack.encode : JSON.stringify, decoder = useBinary ? platform_1.default.Config.msgpack.decode : JSON.parse, format = useBinary ? Utils.Format.msgpack : Utils.Format.json, envelope = this.http.supportsLinkHeaders ? undefined : format;\n params = params || {};\n var _method = method.toLowerCase();\n var headers = _method == 'get' ? Utils.defaultGetHeaders(this.options, format) : Utils.defaultPostHeaders(this.options, format);\n if (callback === undefined) {\n if (this.options.promises) {\n return Utils.promisify(this, 'request', [method, path, params, body, customHeaders]);\n }\n callback = noop;\n }\n if (typeof body !== 'string') {\n body = encoder(body);\n }\n if (this.options.headers) {\n Utils.mixin(headers, this.options.headers);\n }\n if (customHeaders) {\n Utils.mixin(headers, customHeaders);\n }\n var paginatedResource = new paginatedresource_1.default(this, path, headers, envelope, function (resbody, headers, unpacked) {\n return Utils.ensureArray(unpacked ? resbody : decoder(resbody));\n }, \n /* useHttpPaginatedResponse: */ true);\n if (!Utils.arrIn(platform_1.default.Http.methods, _method)) {\n throw new errorinfo_1.default('Unsupported method ' + _method, 40500, 405);\n }\n if (Utils.arrIn(platform_1.default.Http.methodsWithBody, _method)) {\n paginatedResource[_method](params, body, callback);\n }\n else {\n paginatedResource[_method](params, callback);\n }\n };\n Rest.prototype.batchPublish = function (specOrSpecs, callbackArg) {\n if (callbackArg === undefined) {\n if (this.options.promises) {\n return Utils.promisify(this, 'batchPublish', [specOrSpecs]);\n }\n callbackArg = noop;\n }\n var callback = callbackArg;\n var requestBodyDTO;\n var singleSpecMode;\n if (Utils.isArray(specOrSpecs)) {\n requestBodyDTO = specOrSpecs;\n singleSpecMode = false;\n }\n else {\n requestBodyDTO = [specOrSpecs];\n singleSpecMode = true;\n }\n var format = this.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, headers = Utils.defaultPostHeaders(this.options, format);\n if (this.options.headers)\n Utils.mixin(headers, this.options.headers);\n var requestBody = Utils.encodeBody(requestBodyDTO, format);\n resource_1.default.post(this, '/messages', requestBody, headers, { newBatchResponse: 'true' }, null, function (err, body, headers, unpacked) {\n if (err) {\n // TODO remove this type assertion after fixing https://github.com/ably/ably-js/issues/1405\n callback(err);\n return;\n }\n var batchResults = (unpacked ? body : Utils.decodeBody(body, format));\n // I don't love the below type assertions for `callback` but not sure how to avoid them\n if (singleSpecMode) {\n callback(null, batchResults[0]);\n }\n else {\n callback(null, batchResults);\n }\n });\n };\n Rest.prototype.batchPresence = function (channels, callbackArg) {\n if (callbackArg === undefined) {\n if (this.options.promises) {\n return Utils.promisify(this, 'batchPresence', [channels]);\n }\n callbackArg = noop;\n }\n var callback = callbackArg;\n var format = this.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, headers = Utils.defaultPostHeaders(this.options, format);\n if (this.options.headers)\n Utils.mixin(headers, this.options.headers);\n var channelsParam = channels.join(',');\n resource_1.default.get(this, '/presence', headers, { newBatchResponse: 'true', channels: channelsParam }, null, function (err, body, headers, unpacked) {\n if (err) {\n // TODO remove this type assertion after fixing https://github.com/ably/ably-js/issues/1405\n callback(err);\n return;\n }\n var batchResult = (unpacked ? body : Utils.decodeBody(body, format));\n callback(null, batchResult);\n });\n };\n Rest.prototype.setLog = function (logOptions) {\n logger_1.default.setLog(logOptions.level, logOptions.handler);\n };\n Rest.Promise = function (options) {\n options = defaults_1.default.objectifyOptions(options);\n options.promises = true;\n return new Rest(options);\n };\n Rest.Callbacks = Rest;\n Rest.Platform = platform_1.default;\n Rest.Message = message_1.default;\n Rest.PresenceMessage = presencemessage_1.default;\n return Rest;\n}());\nvar Channels = /** @class */ (function () {\n function Channels(rest) {\n this.rest = rest;\n this.all = Object.create(null);\n }\n Channels.prototype.get = function (name, channelOptions) {\n name = String(name);\n var channel = this.all[name];\n if (!channel) {\n this.all[name] = channel = new channel_1.default(this.rest, name, channelOptions);\n }\n else if (channelOptions) {\n channel.setOptions(channelOptions);\n }\n return channel;\n };\n /* Included to support certain niche use-cases; most users should ignore this.\n * Please do not use this unless you know what you're doing */\n Channels.prototype.release = function (name) {\n delete this.all[String(name)];\n };\n return Channels;\n}());\nexports.default = Rest;\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n;(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(6));\n\t}\n\telse {}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS.enc.Utf8;\n\n}));\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n;(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(6));\n\t}\n\telse {}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar eventemitter_1 = tslib_1.__importDefault(__webpack_require__(7));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar presence_1 = tslib_1.__importDefault(__webpack_require__(34));\nvar message_1 = tslib_1.__importDefault(__webpack_require__(9));\nvar errorinfo_1 = tslib_1.__importDefault(__webpack_require__(4));\nvar paginatedresource_1 = tslib_1.__importDefault(__webpack_require__(20));\nvar resource_1 = tslib_1.__importDefault(__webpack_require__(15));\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nfunction noop() { }\nvar MSG_ID_ENTROPY_BYTES = 9;\nfunction allEmptyIds(messages) {\n return Utils.arrEvery(messages, function (message) {\n return !message.id;\n });\n}\nfunction normaliseChannelOptions(options) {\n var channelOptions = options || {};\n if (channelOptions.cipher) {\n if (!platform_1.default.Crypto)\n throw new Error('Encryption not enabled; use ably.encryption.js instead');\n var cipher = platform_1.default.Crypto.getCipher(channelOptions.cipher);\n channelOptions.cipher = cipher.cipherParams;\n channelOptions.channelCipher = cipher.cipher;\n }\n else if ('cipher' in channelOptions) {\n /* Don't deactivate an existing cipher unless options\n * has a 'cipher' key that's falsey */\n channelOptions.cipher = undefined;\n channelOptions.channelCipher = null;\n }\n return channelOptions;\n}\nvar Channel = /** @class */ (function (_super) {\n tslib_1.__extends(Channel, _super);\n function Channel(rest, name, channelOptions) {\n var _this = _super.call(this) || this;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Channel()', 'started; name = ' + name);\n _this.rest = rest;\n _this.name = name;\n _this.basePath = '/channels/' + encodeURIComponent(name);\n _this.presence = new presence_1.default(_this);\n _this.channelOptions = normaliseChannelOptions(channelOptions);\n return _this;\n }\n Channel.prototype.setOptions = function (options) {\n this.channelOptions = normaliseChannelOptions(options);\n };\n Channel.prototype.history = function (params, callback) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Channel.history()', 'channel = ' + this.name);\n /* params and callback are optional; see if params contains the callback */\n if (callback === undefined) {\n if (typeof params == 'function') {\n callback = params;\n params = null;\n }\n else {\n if (this.rest.options.promises) {\n return Utils.promisify(this, 'history', arguments);\n }\n callback = noop;\n }\n }\n this._history(params, callback);\n };\n Channel.prototype._history = function (params, callback) {\n var rest = this.rest, format = rest.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, envelope = this.rest.http.supportsLinkHeaders ? undefined : format, headers = Utils.defaultGetHeaders(rest.options, format);\n if (rest.options.headers)\n Utils.mixin(headers, rest.options.headers);\n var options = this.channelOptions;\n new paginatedresource_1.default(rest, this.basePath + '/messages', headers, envelope, function (body, headers, unpacked) {\n return message_1.default.fromResponseBody(body, options, unpacked ? undefined : format);\n }).get(params, callback);\n };\n Channel.prototype.publish = function () {\n var _this = this;\n var argCount = arguments.length, first = arguments[0], second = arguments[1];\n var callback = arguments[argCount - 1];\n var messages;\n var params;\n if (typeof callback !== 'function') {\n if (this.rest.options.promises) {\n return Utils.promisify(this, 'publish', arguments);\n }\n callback = noop;\n }\n if (typeof first === 'string' || first === null) {\n /* (name, data, ...) */\n messages = [message_1.default.fromValues({ name: first, data: second })];\n params = arguments[2];\n }\n else if (Utils.isObject(first)) {\n messages = [message_1.default.fromValues(first)];\n params = arguments[1];\n }\n else if (Utils.isArray(first)) {\n messages = message_1.default.fromValuesArray(first);\n params = arguments[1];\n }\n else {\n throw new errorinfo_1.default('The single-argument form of publish() expects a message object or an array of message objects', 40013, 400);\n }\n if (typeof params !== 'object' || !params) {\n /* No params supplied (so after-message argument is just the callback or undefined) */\n params = {};\n }\n var rest = this.rest, options = rest.options, format = options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, idempotentRestPublishing = rest.options.idempotentRestPublishing, headers = Utils.defaultPostHeaders(rest.options, format);\n if (options.headers)\n Utils.mixin(headers, options.headers);\n if (idempotentRestPublishing && allEmptyIds(messages)) {\n var msgIdBase_1 = Utils.randomString(MSG_ID_ENTROPY_BYTES);\n Utils.arrForEach(messages, function (message, index) {\n message.id = msgIdBase_1 + ':' + index.toString();\n });\n }\n message_1.default.encodeArray(messages, this.channelOptions, function (err) {\n if (err) {\n callback(err);\n return;\n }\n /* RSL1i */\n var size = message_1.default.getMessagesSize(messages), maxMessageSize = options.maxMessageSize;\n if (size > maxMessageSize) {\n callback(new errorinfo_1.default('Maximum size of messages that can be published at once exceeded ( was ' +\n size +\n ' bytes; limit is ' +\n maxMessageSize +\n ' bytes)', 40009, 400));\n return;\n }\n _this._publish(message_1.default.serialize(messages, format), headers, params, callback);\n });\n };\n Channel.prototype._publish = function (requestBody, headers, params, callback) {\n resource_1.default.post(this.rest, this.basePath + '/messages', requestBody, headers, params, null, callback);\n };\n Channel.prototype.status = function (callback) {\n if (typeof callback !== 'function' && this.rest.options.promises) {\n return Utils.promisify(this, 'status', []);\n }\n var format = this.rest.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json;\n var headers = Utils.defaultPostHeaders(this.rest.options, format);\n resource_1.default.get(this.rest, this.basePath, headers, {}, format, callback || noop);\n };\n return Channel;\n}(eventemitter_1.default));\nexports.default = Channel;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar eventemitter_1 = tslib_1.__importDefault(__webpack_require__(7));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar paginatedresource_1 = tslib_1.__importDefault(__webpack_require__(20));\nvar presencemessage_1 = tslib_1.__importDefault(__webpack_require__(16));\nfunction noop() { }\nvar Presence = /** @class */ (function (_super) {\n tslib_1.__extends(Presence, _super);\n function Presence(channel) {\n var _this = _super.call(this) || this;\n _this.channel = channel;\n _this.basePath = channel.basePath + '/presence';\n return _this;\n }\n Presence.prototype.get = function (params, callback) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Presence.get()', 'channel = ' + this.channel.name);\n /* params and callback are optional; see if params contains the callback */\n if (callback === undefined) {\n if (typeof params == 'function') {\n callback = params;\n params = null;\n }\n else {\n if (this.channel.rest.options.promises) {\n return Utils.promisify(this, 'get', arguments);\n }\n callback = noop;\n }\n }\n var rest = this.channel.rest, format = rest.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, envelope = this.channel.rest.http.supportsLinkHeaders ? undefined : format, headers = Utils.defaultGetHeaders(rest.options, format);\n if (rest.options.headers)\n Utils.mixin(headers, rest.options.headers);\n var options = this.channel.channelOptions;\n new paginatedresource_1.default(rest, this.basePath, headers, envelope, function (body, headers, unpacked) {\n return presencemessage_1.default.fromResponseBody(body, options, unpacked ? undefined : format);\n }).get(params, callback);\n };\n Presence.prototype.history = function (params, callback) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Presence.history()', 'channel = ' + this.channel.name);\n return this._history(params, callback);\n };\n Presence.prototype._history = function (params, callback) {\n /* params and callback are optional; see if params contains the callback */\n if (callback === undefined) {\n if (typeof params == 'function') {\n callback = params;\n params = null;\n }\n else {\n if (this.channel.rest.options.promises) {\n return Utils.promisify(this, '_history', [params]);\n }\n callback = noop;\n }\n }\n var rest = this.channel.rest, format = rest.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, envelope = this.channel.rest.http.supportsLinkHeaders ? undefined : format, headers = Utils.defaultGetHeaders(rest.options, format);\n if (rest.options.headers)\n Utils.mixin(headers, rest.options.headers);\n var options = this.channel.channelOptions;\n new paginatedresource_1.default(rest, this.basePath + '/history', headers, envelope, function (body, headers, unpacked) {\n return presencemessage_1.default.fromResponseBody(body, options, unpacked ? undefined : format);\n }).get(params, callback);\n };\n return Presence;\n}(eventemitter_1.default));\nexports.default = Presence;\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TransportParams = void 0;\nvar tslib_1 = __webpack_require__(0);\nvar protocolmessage_1 = tslib_1.__importDefault(__webpack_require__(10));\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar protocol_1 = tslib_1.__importStar(__webpack_require__(52));\nvar defaults_1 = tslib_1.__importStar(__webpack_require__(8));\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nvar eventemitter_1 = tslib_1.__importDefault(__webpack_require__(7));\nvar messagequeue_1 = tslib_1.__importDefault(__webpack_require__(36));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar connectionstatechange_1 = tslib_1.__importDefault(__webpack_require__(37));\nvar connectionerrors_1 = tslib_1.__importStar(__webpack_require__(21));\nvar errorinfo_1 = tslib_1.__importStar(__webpack_require__(4));\nvar auth_1 = tslib_1.__importDefault(__webpack_require__(18));\nvar message_1 = tslib_1.__importDefault(__webpack_require__(9));\nvar multicaster_1 = tslib_1.__importDefault(__webpack_require__(24));\nvar websockettransport_1 = tslib_1.__importDefault(__webpack_require__(53));\nvar transport_1 = tslib_1.__importDefault(__webpack_require__(26));\nvar HttpStatusCodes_1 = tslib_1.__importDefault(__webpack_require__(14));\nvar haveWebStorage = function () { var _a; return typeof platform_1.default.WebStorage !== 'undefined' && ((_a = platform_1.default.WebStorage) === null || _a === void 0 ? void 0 : _a.localSupported); };\nvar haveSessionStorage = function () { var _a; return typeof platform_1.default.WebStorage !== 'undefined' && ((_a = platform_1.default.WebStorage) === null || _a === void 0 ? void 0 : _a.sessionSupported); };\nvar actions = protocolmessage_1.default.Action;\nvar noop = function () { };\nvar transportPreferenceName = 'ably-transport-preference';\nvar sessionRecoveryName = 'ably-connection-recovery';\nfunction getSessionRecoverData() {\n var _a, _b;\n return haveSessionStorage() && ((_b = (_a = platform_1.default.WebStorage) === null || _a === void 0 ? void 0 : _a.getSession) === null || _b === void 0 ? void 0 : _b.call(_a, sessionRecoveryName));\n}\nfunction setSessionRecoverData(value) {\n var _a, _b;\n return haveSessionStorage() && ((_b = (_a = platform_1.default.WebStorage) === null || _a === void 0 ? void 0 : _a.setSession) === null || _b === void 0 ? void 0 : _b.call(_a, sessionRecoveryName, value));\n}\nfunction clearSessionRecoverData() {\n var _a, _b;\n return haveSessionStorage() && ((_b = (_a = platform_1.default.WebStorage) === null || _a === void 0 ? void 0 : _a.removeSession) === null || _b === void 0 ? void 0 : _b.call(_a, sessionRecoveryName));\n}\nfunction betterTransportThan(a, b) {\n return (Utils.arrIndexOf(platform_1.default.Defaults.transportPreferenceOrder, a.shortName) >\n Utils.arrIndexOf(platform_1.default.Defaults.transportPreferenceOrder, b.shortName));\n}\nfunction bundleWith(dest, src, maxSize) {\n var action;\n if (dest.channel !== src.channel) {\n /* RTL6d3 */\n return false;\n }\n if ((action = dest.action) !== actions.PRESENCE && action !== actions.MESSAGE) {\n /* RTL6d - can only bundle messages or presence */\n return false;\n }\n if (action !== src.action) {\n /* RTL6d4 */\n return false;\n }\n var kind = action === actions.PRESENCE ? 'presence' : 'messages', proposed = dest[kind].concat(src[kind]), size = message_1.default.getMessagesSize(proposed);\n if (size > maxSize) {\n /* RTL6d1 */\n return false;\n }\n if (!Utils.allSame(proposed, 'clientId')) {\n /* RTL6d2 */\n return false;\n }\n if (!Utils.arrEvery(proposed, function (msg) {\n return !msg.id;\n })) {\n /* RTL6d7 */\n return false;\n }\n /* we're good to go! */\n dest[kind] = proposed;\n return true;\n}\nfunction decodeRecoveryKey(recoveryKey) {\n try {\n return JSON.parse(recoveryKey);\n }\n catch (e) {\n return null;\n }\n}\nvar TransportParams = /** @class */ (function () {\n function TransportParams(options, host, mode, connectionKey) {\n this.options = options;\n this.host = host;\n this.mode = mode;\n this.connectionKey = connectionKey;\n this.format = options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json;\n }\n TransportParams.prototype.getConnectParams = function (authParams) {\n var params = authParams ? Utils.copy(authParams) : {};\n var options = this.options;\n switch (this.mode) {\n case 'upgrade':\n params.upgrade = this.connectionKey;\n break;\n case 'resume':\n params.resume = this.connectionKey;\n break;\n case 'recover': {\n var recoveryContext = decodeRecoveryKey(options.recover);\n if (recoveryContext) {\n params.recover = recoveryContext.connectionKey;\n }\n break;\n }\n default:\n }\n if (options.clientId !== undefined) {\n params.clientId = options.clientId;\n }\n if (options.echoMessages === false) {\n params.echo = 'false';\n }\n if (this.format !== undefined) {\n params.format = this.format;\n }\n if (this.stream !== undefined) {\n params.stream = this.stream;\n }\n if (this.heartbeats !== undefined) {\n params.heartbeats = this.heartbeats;\n }\n params.v = defaults_1.default.protocolVersion;\n params.agent = (0, defaults_1.getAgentString)(this.options);\n if (options.transportParams !== undefined) {\n Utils.mixin(params, options.transportParams);\n }\n return params;\n };\n TransportParams.prototype.toString = function () {\n var result = '[mode=' + this.mode;\n if (this.host) {\n result += ',host=' + this.host;\n }\n if (this.connectionKey) {\n result += ',connectionKey=' + this.connectionKey;\n }\n if (this.format) {\n result += ',format=' + this.format;\n }\n result += ']';\n return result;\n };\n return TransportParams;\n}());\nexports.TransportParams = TransportParams;\nvar ConnectionManager = /** @class */ (function (_super) {\n tslib_1.__extends(ConnectionManager, _super);\n function ConnectionManager(realtime, options) {\n var _this = _super.call(this) || this;\n _this.disconnectedRetryCount = 0;\n ConnectionManager.initTransports();\n _this.realtime = realtime;\n _this.options = options;\n var timeouts = options.timeouts;\n /* connectingTimeout: leave preferenceConnectTimeout (~6s) to try the\n * preference transport, then realtimeRequestTimeout (~10s) to establish\n * the base transport in case that fails */\n var connectingTimeout = timeouts.preferenceConnectTimeout + timeouts.realtimeRequestTimeout;\n _this.states = {\n initialized: {\n state: 'initialized',\n terminal: false,\n queueEvents: true,\n sendEvents: false,\n failState: 'disconnected',\n },\n connecting: {\n state: 'connecting',\n terminal: false,\n queueEvents: true,\n sendEvents: false,\n retryDelay: connectingTimeout,\n failState: 'disconnected',\n },\n connected: {\n state: 'connected',\n terminal: false,\n queueEvents: false,\n sendEvents: true,\n failState: 'disconnected',\n },\n synchronizing: {\n state: 'connected',\n terminal: false,\n queueEvents: true,\n sendEvents: false,\n forceQueueEvents: true,\n failState: 'disconnected',\n },\n disconnected: {\n state: 'disconnected',\n terminal: false,\n queueEvents: true,\n sendEvents: false,\n retryDelay: timeouts.disconnectedRetryTimeout,\n failState: 'disconnected',\n },\n suspended: {\n state: 'suspended',\n terminal: false,\n queueEvents: false,\n sendEvents: false,\n retryDelay: timeouts.suspendedRetryTimeout,\n failState: 'suspended',\n },\n closing: {\n state: 'closing',\n terminal: false,\n queueEvents: false,\n sendEvents: false,\n retryDelay: timeouts.realtimeRequestTimeout,\n failState: 'closed',\n },\n closed: { state: 'closed', terminal: true, queueEvents: false, sendEvents: false, failState: 'closed' },\n failed: { state: 'failed', terminal: true, queueEvents: false, sendEvents: false, failState: 'failed' },\n };\n _this.state = _this.states.initialized;\n _this.errorReason = null;\n _this.queuedMessages = new messagequeue_1.default();\n _this.msgSerial = 0;\n _this.connectionDetails = undefined;\n _this.connectionId = undefined;\n _this.connectionKey = undefined;\n _this.connectionStateTtl = timeouts.connectionStateTtl;\n _this.maxIdleInterval = null;\n _this.transports = Utils.intersect(options.transports || defaults_1.default.defaultTransports, ConnectionManager.supportedTransports);\n /* baseTransports selects the leftmost transport in the Defaults.baseTransportOrder list\n * that's both requested and supported. Normally this will be xhr_polling;\n * if xhr isn't supported it will be jsonp. If the user has forced a\n * transport, it'll just be that one. */\n _this.baseTransport = Utils.intersect(defaults_1.default.baseTransportOrder, _this.transports)[0];\n _this.upgradeTransports = Utils.intersect(_this.transports, defaults_1.default.upgradeTransports);\n _this.transportPreference = null;\n _this.httpHosts = defaults_1.default.getHosts(options);\n _this.activeProtocol = null;\n _this.proposedTransports = [];\n _this.pendingTransports = [];\n _this.host = null;\n _this.lastAutoReconnectAttempt = null;\n _this.lastActivity = null;\n _this.forceFallbackHost = false;\n _this.connectCounter = 0;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Realtime.ConnectionManager()', 'started');\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Realtime.ConnectionManager()', 'requested transports = [' + (options.transports || defaults_1.default.defaultTransports) + ']');\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Realtime.ConnectionManager()', 'available transports = [' + _this.transports + ']');\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Realtime.ConnectionManager()', 'http hosts = [' + _this.httpHosts + ']');\n if (!_this.transports.length) {\n var msg = 'no requested transports available';\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'realtime.ConnectionManager()', msg);\n throw new Error(msg);\n }\n var addEventListener = platform_1.default.Config.addEventListener;\n if (addEventListener) {\n /* intercept close event in browser to persist connection id if requested */\n if (haveSessionStorage() && typeof options.recover === 'function') {\n /* Usually can't use bind as not supported in IE8, but IE doesn't support sessionStorage, so... */\n addEventListener('beforeunload', _this.persistConnection.bind(_this));\n }\n if (options.closeOnUnload === true) {\n addEventListener('beforeunload', function () {\n logger_1.default.logAction(logger_1.default.LOG_MAJOR, 'Realtime.ConnectionManager()', 'beforeunload event has triggered the connection to close as closeOnUnload is true');\n _this.requestState({ state: 'closing' });\n });\n }\n /* Listen for online and offline events */\n addEventListener('online', function () {\n if (_this.state == _this.states.disconnected || _this.state == _this.states.suspended) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager caught browser ‘online’ event', 'reattempting connection');\n _this.requestState({ state: 'connecting' });\n }\n else if (_this.state == _this.states.connecting) {\n // RTN20c: if 'online' event recieved while CONNECTING, abandon connection attempt and retry\n _this.pendingTransports.forEach(function (transport) {\n // Detach transport listeners to avoid connection state side effects from calling dispose\n transport.off();\n });\n _this.disconnectAllTransports();\n _this.startConnect();\n }\n });\n addEventListener('offline', function () {\n if (_this.state == _this.states.connected) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager caught browser ‘offline’ event', 'disconnecting active transport');\n // Not sufficient to just go to the 'disconnected' state, want to\n // force all transports to reattempt the connection. Will immediately\n // retry.\n _this.disconnectAllTransports();\n }\n });\n }\n return _this;\n }\n ConnectionManager.initTransports = function () {\n (0, websockettransport_1.default)(ConnectionManager);\n Utils.arrForEach(platform_1.default.Transports, function (initFn) {\n initFn(ConnectionManager);\n });\n };\n ConnectionManager.prototype.createTransportParams = function (host, mode) {\n return new TransportParams(this.options, host, mode, this.connectionKey);\n };\n ConnectionManager.prototype.getTransportParams = function (callback) {\n var _this = this;\n var decideMode = function (modeCb) {\n if (_this.connectionKey) {\n modeCb('resume');\n return;\n }\n if (typeof _this.options.recover === 'string') {\n modeCb('recover');\n return;\n }\n var recoverFn = _this.options.recover, lastSessionData = getSessionRecoverData();\n if (lastSessionData && typeof recoverFn === 'function') {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.getTransportParams()', 'Calling clientOptions-provided recover function with last session data');\n recoverFn(lastSessionData, function (shouldRecover) {\n if (shouldRecover) {\n _this.options.recover = lastSessionData.recoveryKey;\n modeCb('recover');\n }\n else {\n modeCb('clean');\n }\n });\n return;\n }\n modeCb('clean');\n };\n decideMode(function (mode) {\n var transportParams = _this.createTransportParams(null, mode);\n if (mode === 'recover') {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.getTransportParams()', 'Transport recovery mode = recover; recoveryKey = ' + _this.options.recover);\n var recoveryContext = decodeRecoveryKey(_this.options.recover);\n if (recoveryContext) {\n _this.msgSerial = recoveryContext.msgSerial;\n }\n }\n else {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.getTransportParams()', 'Transport params = ' + transportParams.toString());\n }\n callback(transportParams);\n });\n };\n /**\n * Attempt to connect using a given transport\n * @param transportParams\n * @param candidate, the transport to try\n * @param callback\n */\n ConnectionManager.prototype.tryATransport = function (transportParams, candidate, callback) {\n var _this = this;\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.tryATransport()', 'trying ' + candidate);\n transport_1.default.tryConnect(ConnectionManager.supportedTransports[candidate], this, this.realtime.auth, transportParams, function (wrappedErr, transport) {\n var state = _this.state;\n if (state == _this.states.closing || state == _this.states.closed || state == _this.states.failed) {\n if (transport) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.tryATransport()', 'connection ' + state.state + ' while we were attempting the transport; closing ' + transport);\n transport.close();\n }\n callback(true);\n return;\n }\n if (wrappedErr) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.tryATransport()', 'transport ' + candidate + ' ' + wrappedErr.event + ', err: ' + wrappedErr.error.toString());\n /* Comet transport onconnect token errors can be dealt with here.\n * Websocket ones only happen after the transport claims to be viable,\n * so are dealt with as non-onconnect token errors */\n if (auth_1.default.isTokenErr(wrappedErr.error) &&\n !(_this.errorReason && auth_1.default.isTokenErr(_this.errorReason))) {\n _this.errorReason = wrappedErr.error;\n /* re-get a token and try again */\n _this.realtime.auth._forceNewToken(null, null, function (err) {\n if (err) {\n _this.actOnErrorFromAuthorize(err);\n return;\n }\n _this.tryATransport(transportParams, candidate, callback);\n });\n }\n else if (wrappedErr.event === 'failed') {\n /* Error that's fatal to the connection */\n _this.notifyState({ state: 'failed', error: wrappedErr.error });\n callback(true);\n }\n else if (wrappedErr.event === 'disconnected') {\n if (!(0, connectionerrors_1.isRetriable)(wrappedErr.error)) {\n /* Error received from the server that does not call for trying a fallback host, eg a rate limit */\n _this.notifyState({ state: _this.states.connecting.failState, error: wrappedErr.error });\n callback(true);\n }\n else {\n /* Error with that transport only; continue trying other fallback hosts */\n callback(false);\n }\n }\n return;\n }\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.tryATransport()', 'viable transport ' + candidate + '; setting pending');\n _this.setTransportPending(transport, transportParams);\n callback(null, transport);\n });\n };\n /**\n * Called when a transport is indicated to be viable, and the ConnectionManager\n * expects to activate this transport as soon as it is connected.\n * @param transport\n * @param transportParams\n */\n ConnectionManager.prototype.setTransportPending = function (transport, transportParams) {\n var _this = this;\n var mode = transportParams.mode;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.setTransportPending()', 'transport = ' + transport + '; mode = ' + mode);\n Utils.arrDeleteValue(this.proposedTransports, transport);\n this.pendingTransports.push(transport);\n var optimalTransport = platform_1.default.Defaults.transportPreferenceOrder[platform_1.default.Defaults.transportPreferenceOrder.length - 1];\n transport.once('connected', function (error, connectionId, connectionDetails) {\n if (mode == 'upgrade' && _this.activeProtocol) {\n /* if ws and xhrs are connecting in parallel, delay xhrs activation to let ws go ahead */\n if (transport.shortName !== optimalTransport &&\n Utils.arrIn(_this.getUpgradePossibilities(), optimalTransport) &&\n _this.activeProtocol) {\n setTimeout(function () {\n _this.scheduleTransportActivation(error, transport, connectionId, connectionDetails);\n }, _this.options.timeouts.parallelUpgradeDelay);\n }\n else {\n _this.scheduleTransportActivation(error, transport, connectionId, connectionDetails);\n }\n }\n else {\n _this.activateTransport(error, transport, connectionId, connectionDetails);\n /* allow connectImpl to start the upgrade process if needed, but allow\n * other event handlers, including activating the transport, to run first */\n platform_1.default.Config.nextTick(function () {\n _this.connectImpl(transportParams);\n });\n }\n if (mode === 'recover' && _this.options.recover) {\n /* After a successful recovery, we unpersist, as a recovery key cannot\n * be used more than once */\n _this.options.recover = null;\n _this.unpersistConnection();\n }\n });\n var self = this;\n transport.on(['disconnected', 'closed', 'failed'], function (error) {\n self.deactivateTransport(transport, this.event, error);\n });\n this.emit('transport.pending', transport);\n };\n /**\n * Called when an upgrade transport is connected,\n * to schedule the activation of that transport.\n * @param error\n * @param transport\n * @param connectionId\n * @param connectionDetails\n */\n ConnectionManager.prototype.scheduleTransportActivation = function (error, transport, connectionId, connectionDetails) {\n var _this = this;\n var currentTransport = this.activeProtocol && this.activeProtocol.getTransport(), abandon = function () {\n transport.disconnect();\n Utils.arrDeleteValue(_this.pendingTransports, transport);\n };\n if (this.state !== this.states.connected && this.state !== this.states.connecting) {\n /* This is most likely to happen for the delayed XHRs, when XHRs and ws are scheduled in parallel*/\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.scheduleTransportActivation()', 'Current connection state (' +\n this.state.state +\n (this.state === this.states.synchronizing ? ', but with an upgrade already in progress' : '') +\n ') is not valid to upgrade in; abandoning upgrade to ' +\n transport.shortName);\n abandon();\n return;\n }\n if (currentTransport && !betterTransportThan(transport, currentTransport)) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.scheduleTransportActivation()', 'Proposed transport ' +\n transport.shortName +\n ' is no better than current active transport ' +\n currentTransport.shortName +\n ' - abandoning upgrade');\n abandon();\n return;\n }\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.scheduleTransportActivation()', 'Scheduling transport upgrade; transport = ' + transport);\n var oldProtocol = null;\n if (!transport.isConnected) {\n /* This is only possible if the xhr streaming transport was disconnected during the parallelUpgradeDelay */\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.scheduleTransportActivation()', 'Proposed transport ' + transport.shortName + 'is no longer connected; abandoning upgrade');\n abandon();\n return;\n }\n if (this.state === this.states.connected) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.scheduleTransportActivation()', 'Currently connected, so temporarily pausing events until the upgrade is complete');\n this.state = this.states.synchronizing;\n oldProtocol = this.activeProtocol;\n }\n else if (this.state !== this.states.connecting) {\n /* Note: upgrading from the connecting state is valid if the old active\n * transport was deactivated after the upgrade transport first connected;\n * see logic in deactivateTransport */\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.scheduleTransportActivation()', 'Current connection state (' +\n this.state.state +\n (this.state === this.states.synchronizing ? ', but with an upgrade already in progress' : '') +\n ') is not valid to upgrade in; abandoning upgrade to ' +\n transport.shortName);\n abandon();\n return;\n }\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.scheduleTransportActivation()', 'Syncing transport; transport = ' + transport);\n var finishUpgrade = function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.scheduleTransportActivation()', 'Activating transport; transport = ' + transport);\n // Send ACTIVATE to tell the server to make this transport the\n // active transport, which suspends channels until we re-attach.\n transport.send(protocolmessage_1.default.fromValues({\n action: actions.ACTIVATE,\n }));\n _this.activateTransport(error, transport, connectionId, connectionDetails);\n /* Restore pre-sync state. If state has changed in the meantime,\n * don't touch it -- since the websocket transport waits a tick before\n * disposing itself, it's possible for it to have happily synced\n * without err while, unknown to it, the connection has closed in the\n * meantime and the ws transport is scheduled for death */\n if (_this.state === _this.states.synchronizing) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.scheduleTransportActivation()', 'Pre-upgrade protocol idle, sending queued messages on upgraded transport; transport = ' + transport);\n _this.state = _this.states.connected;\n }\n else {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.scheduleTransportActivation()', 'Pre-upgrade protocol idle, but state is now ' + _this.state.state + ', so leaving unchanged');\n }\n if (_this.state.sendEvents) {\n _this.sendQueuedMessages();\n }\n };\n /* Wait until sync is done and old transport is idle before activating new transport. This\n * guarantees that messages arrive at realtime in the same order they are sent.\n *\n * If a message times out on the old transport, since it's still the active transport the\n * message will be requeued. deactivateTransport will see the pending transport and notify\n * the `connecting` state without starting a new connection, so the new transport can take\n * over once deactivateTransport clears the old protocol's queue.\n *\n * If there is no old protocol, that meant that we weren't in the connected state at the\n * beginning of the sync - likely the base transport died just before the sync. So can just\n * finish the upgrade. If we're actually in closing/failed rather than connecting, that's\n * fine, activatetransport will deal with that. */\n if (oldProtocol) {\n /* Most of the time this will be already true: the new-transport sync will have given\n * enough time for in-flight messages on the old transport to complete. */\n oldProtocol.onceIdle(finishUpgrade);\n }\n else {\n finishUpgrade();\n }\n };\n /**\n * Called when a transport is connected, and the connectionmanager decides that\n * it will now be the active transport. Returns whether or not it activated\n * the transport (if the connection is closing/closed it will choose not to).\n * @param transport the transport instance\n * @param connectionId the id of the new active connection\n * @param connectionDetails the details of the new active connection\n */\n ConnectionManager.prototype.activateTransport = function (error, transport, connectionId, connectionDetails) {\n var _this = this;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.activateTransport()', 'transport = ' + transport);\n if (error) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'ConnectionManager.activateTransport()', 'error = ' + error);\n }\n if (connectionId) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.activateTransport()', 'connectionId = ' + connectionId);\n }\n if (connectionDetails) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.activateTransport()', 'connectionDetails = ' + JSON.stringify(connectionDetails));\n }\n this.persistTransportPreference(transport);\n /* if the connectionmanager moved to the closing/closed state before this\n * connection event, then we won't activate this transport */\n var existingState = this.state, connectedState = this.states.connected.state;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.activateTransport()', 'current state = ' + existingState.state);\n if (existingState.state == this.states.closing.state ||\n existingState.state == this.states.closed.state ||\n existingState.state == this.states.failed.state) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.activateTransport()', 'Disconnecting transport and abandoning');\n transport.disconnect();\n return false;\n }\n /* remove this transport from pending transports */\n Utils.arrDeleteValue(this.pendingTransports, transport);\n /* if the transport is not connected then don't activate it */\n if (!transport.isConnected) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.activateTransport()', 'Declining to activate transport ' + transport + ' since it appears to no longer be connected');\n return false;\n }\n /* the given transport is connected; this will immediately\n * take over as the active transport */\n var existingActiveProtocol = this.activeProtocol;\n this.activeProtocol = new protocol_1.default(transport);\n this.host = transport.params.host;\n var connectionKey = connectionDetails.connectionKey;\n if (connectionKey && this.connectionKey != connectionKey) {\n this.setConnection(connectionId, connectionDetails, !!error);\n }\n /* Rebroadcast any new connectionDetails from the active transport, which\n * can come at any time (eg following a reauth), and emit an RTN24 UPDATE\n * event. (Listener added on nextTick because we're in a transport.on('connected')\n * callback at the moment; if we add it now we'll be adding it to the end\n * of the listeners array and it'll be called immediately) */\n this.onConnectionDetailsUpdate(connectionDetails, transport);\n platform_1.default.Config.nextTick(function () {\n transport.on('connected', function (connectedErr, _connectionId, connectionDetails) {\n _this.onConnectionDetailsUpdate(connectionDetails, transport);\n _this.emit('update', new connectionstatechange_1.default(connectedState, connectedState, null, connectedErr));\n });\n });\n /* If previously not connected, notify the state change (including any\n * error). */\n if (existingState.state === this.states.connected.state) {\n if (error) {\n /* if upgrading without error, leave any existing errorReason alone */\n this.errorReason = this.realtime.connection.errorReason = error;\n /* Only bother emitting an upgrade if there's an error; otherwise it's\n * just a transport upgrade, so auth details won't have changed */\n this.emit('update', new connectionstatechange_1.default(connectedState, connectedState, null, error));\n }\n }\n else {\n this.notifyState({ state: 'connected', error: error });\n this.errorReason = this.realtime.connection.errorReason = error || null;\n }\n /* Send after the connection state update, as Channels hooks into this to\n * resend attaches on a new transport if necessary */\n this.emit('transport.active', transport);\n /* Gracefully terminate existing protocol */\n if (existingActiveProtocol) {\n if (existingActiveProtocol.messageQueue.count() > 0) {\n /* We could just requeue pending messages on the new transport, but\n * actually this should never happen: transports should only take over\n * from other active transports when upgrading, and upgrading waits for\n * the old transport to be idle. So log an error. */\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'ConnectionManager.activateTransport()', 'Previous active protocol (for transport ' +\n existingActiveProtocol.transport.shortName +\n ', new one is ' +\n transport.shortName +\n ') finishing with ' +\n existingActiveProtocol.messageQueue.count() +\n ' messages still pending');\n }\n if (existingActiveProtocol.transport === transport) {\n var msg = 'Assumption violated: activating a transport that was also the transport for the previous active protocol; transport = ' +\n transport.shortName +\n '; stack = ' +\n new Error().stack;\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'ConnectionManager.activateTransport()', msg);\n }\n else {\n existingActiveProtocol.finish();\n }\n }\n /* Terminate any other pending transport(s), and\n * abort any not-yet-pending transport attempts */\n Utils.safeArrForEach(this.pendingTransports, function (pendingTransport) {\n if (pendingTransport === transport) {\n var msg = 'Assumption violated: activating a transport that is still marked as a pending transport; transport = ' +\n transport.shortName +\n '; stack = ' +\n new Error().stack;\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'ConnectionManager.activateTransport()', msg);\n Utils.arrDeleteValue(_this.pendingTransports, transport);\n }\n else {\n pendingTransport.disconnect();\n }\n });\n Utils.safeArrForEach(this.proposedTransports, function (proposedTransport) {\n if (proposedTransport === transport) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'ConnectionManager.activateTransport()', 'Assumption violated: activating a transport that is still marked as a proposed transport; transport = ' +\n transport.shortName +\n '; stack = ' +\n new Error().stack);\n Utils.arrDeleteValue(_this.proposedTransports, transport);\n }\n else {\n proposedTransport.dispose();\n }\n });\n return true;\n };\n /**\n * Called when a transport is no longer the active transport. This can occur\n * in any transport connection state.\n * @param transport\n */\n ConnectionManager.prototype.deactivateTransport = function (transport, state, error) {\n var currentProtocol = this.activeProtocol, wasActive = currentProtocol && currentProtocol.getTransport() === transport, wasPending = Utils.arrDeleteValue(this.pendingTransports, transport), wasProposed = Utils.arrDeleteValue(this.proposedTransports, transport), noTransportsScheduledForActivation = this.noTransportsScheduledForActivation();\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.deactivateTransport()', 'transport = ' + transport);\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.deactivateTransport()', 'state = ' +\n state +\n (wasActive ? '; was active' : wasPending ? '; was pending' : wasProposed ? '; was proposed' : '') +\n (noTransportsScheduledForActivation ? '' : '; another transport is scheduled for activation'));\n if (error && error.message)\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.deactivateTransport()', 'reason = ' + error.message);\n if (wasActive) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.deactivateTransport()', 'Getting, clearing, and requeuing ' +\n this.activeProtocol.messageQueue.count() +\n ' pending messages');\n this.queuePendingMessages(currentProtocol.getPendingMessages());\n /* Clear any messages we requeue to allow the protocol to become idle.\n * In case of an upgrade, this will trigger an immediate activation of\n * the upgrade transport, so delay a tick so this transport can finish\n * deactivating */\n platform_1.default.Config.nextTick(function () {\n currentProtocol.clearPendingMessages();\n });\n this.activeProtocol = this.host = null;\n }\n this.emit('transport.inactive', transport);\n /* this transport state change is a state change for the connectionmanager if\n * - the transport was the active transport and there are no transports\n * which are connected and scheduled for activation, just waiting for the\n * active transport to finish what its doing; or\n * - the transport was the active transport and the error was fatal (so\n * unhealable by another transport); or\n * - there is no active transport, and this is the last remaining\n * pending transport (so we were in the connecting state)\n */\n if ((wasActive && noTransportsScheduledForActivation) ||\n (wasActive && state === 'failed') ||\n state === 'closed' ||\n (currentProtocol === null && wasPending && this.pendingTransports.length === 0)) {\n /* If we're disconnected with a 5xx we need to try fallback hosts\n * (RTN14d), but (a) due to how the upgrade sequence works, the\n * host/transport selection sequence only cares about getting to\n * `preconnect` (eg establishing a websocket) getting a `disconnected`\n * protocol message afterwards is too late; and (b) host retry only\n * applies to connectBase unless the stored preference transport doesn't\n * work. We solve this by unpersisting the transport preference and\n * setting an instance variable to force fallback hosts to be used (if\n * any) here. Bit of a kludge, but no real better alternatives without\n * rewriting the entire thing */\n if (state === 'disconnected' && error && error.statusCode > 500 && this.httpHosts.length > 1) {\n this.unpersistTransportPreference();\n this.forceFallbackHost = true;\n /* and try to connect again to try a fallback host without waiting for the usual 15s disconnectedRetryTimeout */\n this.notifyState({ state: state, error: error, retryImmediately: true });\n return;\n }\n /* TODO remove below line once realtime sends token errors as DISCONNECTEDs */\n var newConnectionState = state === 'failed' && auth_1.default.isTokenErr(error) ? 'disconnected' : state;\n this.notifyState({ state: newConnectionState, error: error });\n return;\n }\n if (wasActive && state === 'disconnected' && this.state !== this.states.synchronizing) {\n /* If we were active but there is another transport scheduled for\n * activation, go into to the connecting state until that transport\n * activates and sets us back to connected. (manually starting the\n * transition timers in case that never happens). (If we were in the\n * synchronizing state, then that's fine, the old transport just got its\n * disconnected before the new one got the sync -- ignore it and keep\n * waiting for the sync. If it fails we have a separate sync timer that\n * will expire). */\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.deactivateTransport()', 'wasActive but another transport is connected and scheduled for activation, so going into the connecting state until it activates');\n this.startSuspendTimer();\n this.startTransitionTimer(this.states.connecting);\n this.notifyState({ state: 'connecting', error: error });\n }\n };\n /* Helper that returns true if there are no transports which are pending,\n * have been connected, and are just waiting for onceNoPending to fire before\n * being activated */\n ConnectionManager.prototype.noTransportsScheduledForActivation = function () {\n return (Utils.isEmpty(this.pendingTransports) ||\n this.pendingTransports.every(function (transport) {\n return !transport.isConnected;\n }));\n };\n ConnectionManager.prototype.setConnection = function (connectionId, connectionDetails, hasConnectionError) {\n /* if connectionKey changes but connectionId stays the same, then just a\n * transport change on the same connection. If connectionId changes, we're\n * on a new connection, with implications for msgSerial and channel state */\n /* If no previous connectionId, don't reset the msgSerial as it may have\n * been set by recover data (unless the recover failed) */\n var prevConnId = this.connectionId, connIdChanged = prevConnId && prevConnId !== connectionId, recoverFailure = !prevConnId && hasConnectionError;\n if (connIdChanged || recoverFailure) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.setConnection()', 'Resetting msgSerial');\n this.msgSerial = 0;\n // RTN19a2: In the event of a new connectionId, previous msgSerials are\n // meaningless.\n this.queuedMessages.resetSendAttempted();\n }\n if (this.connectionId !== connectionId) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.setConnection()', 'New connectionId; reattaching any attached channels');\n }\n this.realtime.connection.id = this.connectionId = connectionId;\n this.realtime.connection.key = this.connectionKey = connectionDetails.connectionKey;\n };\n ConnectionManager.prototype.clearConnection = function () {\n this.realtime.connection.id = this.connectionId = undefined;\n this.realtime.connection.key = this.connectionKey = undefined;\n this.msgSerial = 0;\n this.unpersistConnection();\n };\n ConnectionManager.prototype.createRecoveryKey = function () {\n // RTN16g2.\n if (!this.connectionKey) {\n return null;\n }\n return JSON.stringify({\n connectionKey: this.connectionKey,\n msgSerial: this.msgSerial,\n channelSerials: this.realtime.channels.channelSerials(),\n });\n };\n ConnectionManager.prototype.checkConnectionStateFreshness = function () {\n if (!this.lastActivity || !this.connectionId) {\n return;\n }\n var sinceLast = Utils.now() - this.lastActivity;\n if (sinceLast > this.connectionStateTtl + this.maxIdleInterval) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.checkConnectionStateFreshness()', 'Last known activity from realtime was ' + sinceLast + 'ms ago; discarding connection state');\n this.clearConnection();\n this.states.connecting.failState = 'suspended';\n }\n };\n /**\n * Called when the connectionmanager wants to persist transport\n * state for later recovery. Only applicable in the browser context.\n */\n ConnectionManager.prototype.persistConnection = function () {\n if (haveSessionStorage()) {\n var recoveryKey = this.createRecoveryKey();\n if (recoveryKey) {\n setSessionRecoverData({\n recoveryKey: recoveryKey,\n disconnectedAt: Utils.now(),\n location: global.location,\n clientId: this.realtime.auth.clientId,\n });\n }\n }\n };\n /**\n * Called when the connectionmanager wants to persist transport\n * state for later recovery. Only applicable in the browser context.\n */\n ConnectionManager.prototype.unpersistConnection = function () {\n clearSessionRecoverData();\n };\n /*********************\n * state management\n *********************/\n ConnectionManager.prototype.getError = function () {\n return this.errorReason || this.getStateError();\n };\n ConnectionManager.prototype.getStateError = function () {\n var _a, _b;\n return (_b = (_a = connectionerrors_1.default)[this.state.state]) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n ConnectionManager.prototype.activeState = function () {\n return this.state.queueEvents || this.state.sendEvents;\n };\n ConnectionManager.prototype.enactStateChange = function (stateChange) {\n var logLevel = stateChange.current === 'failed' ? logger_1.default.LOG_ERROR : logger_1.default.LOG_MAJOR;\n logger_1.default.logAction(logLevel, 'Connection state', stateChange.current + (stateChange.reason ? '; reason: ' + stateChange.reason : ''));\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.enactStateChange', 'setting new state: ' +\n stateChange.current +\n '; reason = ' +\n (stateChange.reason && stateChange.reason.message));\n var newState = (this.state = this.states[stateChange.current]);\n if (stateChange.reason) {\n this.errorReason = stateChange.reason;\n this.realtime.connection.errorReason = stateChange.reason;\n }\n if (newState.terminal || newState.state === 'suspended') {\n /* suspended is nonterminal, but once in the suspended state, realtime\n * will have discarded our connection state, so futher connection\n * attempts should start from scratch */\n this.clearConnection();\n }\n this.emit('connectionstate', stateChange);\n };\n /****************************************\n * ConnectionManager connection lifecycle\n ****************************************/\n ConnectionManager.prototype.startTransitionTimer = function (transitionState) {\n var _this = this;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.startTransitionTimer()', 'transitionState: ' + transitionState.state);\n if (this.transitionTimer) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.startTransitionTimer()', 'clearing already-running timer');\n clearTimeout(this.transitionTimer);\n }\n this.transitionTimer = setTimeout(function () {\n if (_this.transitionTimer) {\n _this.transitionTimer = null;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager ' + transitionState.state + ' timer expired', 'requesting new state: ' + transitionState.failState);\n _this.notifyState({ state: transitionState.failState });\n }\n }, transitionState.retryDelay);\n };\n ConnectionManager.prototype.cancelTransitionTimer = function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.cancelTransitionTimer()', '');\n if (this.transitionTimer) {\n clearTimeout(this.transitionTimer);\n this.transitionTimer = null;\n }\n };\n ConnectionManager.prototype.startSuspendTimer = function () {\n var _this = this;\n if (this.suspendTimer)\n return;\n this.suspendTimer = setTimeout(function () {\n if (_this.suspendTimer) {\n _this.suspendTimer = null;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager suspend timer expired', 'requesting new state: suspended');\n _this.states.connecting.failState = 'suspended';\n _this.notifyState({ state: 'suspended' });\n }\n }, this.connectionStateTtl);\n };\n ConnectionManager.prototype.checkSuspendTimer = function (state) {\n if (state !== 'disconnected' && state !== 'suspended' && state !== 'connecting')\n this.cancelSuspendTimer();\n };\n ConnectionManager.prototype.cancelSuspendTimer = function () {\n this.states.connecting.failState = 'disconnected';\n if (this.suspendTimer) {\n clearTimeout(this.suspendTimer);\n this.suspendTimer = null;\n }\n };\n ConnectionManager.prototype.startRetryTimer = function (interval) {\n var _this = this;\n this.retryTimer = setTimeout(function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager retry timer expired', 'retrying');\n _this.retryTimer = null;\n _this.requestState({ state: 'connecting' });\n }, interval);\n };\n ConnectionManager.prototype.cancelRetryTimer = function () {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n this.retryTimer = null;\n }\n };\n ConnectionManager.prototype.notifyState = function (indicated) {\n var _this = this;\n var _a, _b;\n var state = indicated.state;\n /* We retry immediately if:\n * - something disconnects us while we're connected, or\n * - a viable (but not yet active) transport fails due to a token error (so\n * this.errorReason will be set, and startConnect will do a forced\n * authorize). If this.errorReason is already set (to a token error),\n * then there has been at least one previous attempt to connect that also\n * failed for a token error, so by RTN14b we go to DISCONNECTED and wait\n * before trying again */\n var retryImmediately = state === 'disconnected' &&\n (this.state === this.states.connected ||\n this.state === this.states.synchronizing ||\n indicated.retryImmediately ||\n (this.state === this.states.connecting &&\n indicated.error &&\n auth_1.default.isTokenErr(indicated.error) &&\n !(this.errorReason && auth_1.default.isTokenErr(this.errorReason))));\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.notifyState()', 'new state: ' + state + (retryImmediately ? '; will retry connection immediately' : ''));\n /* do nothing if we're already in the indicated state */\n if (state == this.state.state)\n return;\n /* kill timers (possibly excepting suspend timer depending on the notified\n * state), as these are superseded by this notification */\n this.cancelTransitionTimer();\n this.cancelRetryTimer();\n this.checkSuspendTimer(indicated.state);\n if (state === 'suspended' || state === 'connected') {\n this.disconnectedRetryCount = 0;\n }\n /* do nothing if we're unable to move from the current state */\n if (this.state.terminal)\n return;\n /* process new state */\n var newState = this.states[indicated.state];\n var retryDelay = newState.retryDelay;\n if (newState.state === 'disconnected') {\n this.disconnectedRetryCount++;\n retryDelay = Utils.getRetryTime(newState.retryDelay, this.disconnectedRetryCount);\n }\n var change = new connectionstatechange_1.default(this.state.state, newState.state, retryDelay, indicated.error || ((_b = (_a = connectionerrors_1.default)[newState.state]) === null || _b === void 0 ? void 0 : _b.call(_a)));\n if (retryImmediately) {\n var autoReconnect = function () {\n if (_this.state === _this.states.disconnected) {\n _this.lastAutoReconnectAttempt = Utils.now();\n _this.requestState({ state: 'connecting' });\n }\n };\n var sinceLast = this.lastAutoReconnectAttempt && Utils.now() - this.lastAutoReconnectAttempt + 1;\n if (sinceLast && sinceLast < 1000) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.notifyState()', 'Last reconnect attempt was only ' +\n sinceLast +\n 'ms ago, waiting another ' +\n (1000 - sinceLast) +\n 'ms before trying again');\n setTimeout(autoReconnect, 1000 - sinceLast);\n }\n else {\n platform_1.default.Config.nextTick(autoReconnect);\n }\n }\n else if (state === 'disconnected' || state === 'suspended') {\n this.startRetryTimer(retryDelay);\n }\n /* If going into disconnect/suspended (and not retrying immediately), or a\n * terminal state, ensure there are no orphaned transports hanging around. */\n if ((state === 'disconnected' && !retryImmediately) || state === 'suspended' || newState.terminal) {\n /* Wait till the next tick so the connection state change is enacted,\n * so aborting transports doesn't trigger redundant state changes */\n platform_1.default.Config.nextTick(function () {\n _this.disconnectAllTransports();\n });\n }\n if (state == 'connected' && !this.activeProtocol) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'ConnectionManager.notifyState()', 'Broken invariant: attempted to go into connected state, but there is no active protocol');\n }\n /* implement the change and notify */\n this.enactStateChange(change);\n if (this.state.sendEvents) {\n this.sendQueuedMessages();\n }\n else if (!this.state.queueEvents) {\n this.realtime.channels.propogateConnectionInterruption(state, change.reason);\n this.failQueuedMessages(change.reason); // RTN7c\n }\n };\n ConnectionManager.prototype.requestState = function (request) {\n var _this = this;\n var _a, _b;\n var state = request.state;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.requestState()', 'requested state: ' + state + '; current state: ' + this.state.state);\n if (state == this.state.state)\n return; /* silently do nothing */\n /* kill running timers, as this request supersedes them */\n this.cancelTransitionTimer();\n this.cancelRetryTimer();\n /* for suspend timer check rather than cancel -- eg requesting a connecting\n * state should not reset the suspend timer */\n this.checkSuspendTimer(state);\n if (state == 'connecting' && this.state.state == 'connected')\n return;\n if (state == 'closing' && this.state.state == 'closed')\n return;\n var newState = this.states[state], change = new connectionstatechange_1.default(this.state.state, newState.state, null, request.error || ((_b = (_a = connectionerrors_1.default)[newState.state]) === null || _b === void 0 ? void 0 : _b.call(_a)));\n this.enactStateChange(change);\n if (state == 'connecting') {\n platform_1.default.Config.nextTick(function () {\n _this.startConnect();\n });\n }\n if (state == 'closing') {\n this.closeImpl();\n }\n };\n ConnectionManager.prototype.startConnect = function () {\n var _this = this;\n if (this.state !== this.states.connecting) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.startConnect()', 'Must be in connecting state to connect, but was ' + this.state.state);\n return;\n }\n var auth = this.realtime.auth;\n /* The point of the connectCounter mechanism is to ensure that the\n * connection procedure can be cancelled. We want disconnectAllTransports\n * to be able to stop any in-progress connection, even before it gets to\n * the stage of having a pending (or even a proposed) transport that it can\n * dispose() of. So we check that it's still current after any async stage,\n * up until the stage that is synchronous with instantiating a transport */\n var connectCount = ++this.connectCounter;\n var connect = function () {\n _this.checkConnectionStateFreshness();\n _this.getTransportParams(function (transportParams) {\n if (transportParams.mode === 'recover' && transportParams.options.recover) {\n var recoveryContext = decodeRecoveryKey(transportParams.options.recover);\n if (recoveryContext) {\n _this.realtime.channels.recoverChannels(recoveryContext.channelSerials);\n }\n }\n if (connectCount !== _this.connectCounter) {\n return;\n }\n _this.connectImpl(transportParams, connectCount);\n });\n };\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.startConnect()', 'starting connection');\n this.startSuspendTimer();\n this.startTransitionTimer(this.states.connecting);\n if (auth.method === 'basic') {\n connect();\n }\n else {\n var authCb = function (err) {\n if (connectCount !== _this.connectCounter) {\n return;\n }\n if (err) {\n _this.actOnErrorFromAuthorize(err);\n }\n else {\n connect();\n }\n };\n if (this.errorReason && auth_1.default.isTokenErr(this.errorReason)) {\n /* Force a refetch of a new token */\n auth._forceNewToken(null, null, authCb);\n }\n else {\n auth._ensureValidAuthCredentials(false, authCb);\n }\n }\n };\n /**\n * There are three stages in connecting:\n * - preference: if there is a cached transport preference, we try to connect\n * on that. If that fails or times out we abort the attempt, remove the\n * preference and fall back to base. If it succeeds, we try upgrading it if\n * needed (will only be in the case where the preference is xhrs and the\n * browser supports ws).\n * - base: we try to connect with the best transport that we think will\n * never fail for this browser (usually this is xhr_polling; for very old\n * browsers will be jsonp, for node will be comet). If it doesn't work, we\n * try fallback hosts.\n * - upgrade: given a connected transport, we see if there are any better\n * ones, and if so, try to upgrade to them.\n *\n * connectImpl works out what stage you're at (which is purely a function of\n * the current connection state and whether there are any stored preferences),\n * and dispatches accordingly. After a transport has been set pending,\n * tryATransport calls connectImpl to see if there's another stage to be done.\n * */\n ConnectionManager.prototype.connectImpl = function (transportParams, connectCount) {\n var state = this.state.state;\n if (state !== this.states.connecting.state && state !== this.states.connected.state) {\n /* Only keep trying as long as in the 'connecting' state (or 'connected'\n * for upgrading). Any operation can put us into 'disconnected' to cancel\n * connection attempts and wait before retrying, or 'failed' to fail. */\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.connectImpl()', 'Must be in connecting state to connect (or connected to upgrade), but was ' + state);\n }\n else if (this.pendingTransports.length) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.connectImpl()', 'Transports ' + this.pendingTransports[0].toString() + ' currently pending; taking no action');\n }\n else if (state == this.states.connected.state) {\n this.upgradeIfNeeded(transportParams);\n }\n else if (this.transports.length > 1 && this.getTransportPreference()) {\n this.connectPreference(transportParams, connectCount);\n }\n else {\n this.connectBase(transportParams, connectCount);\n }\n };\n ConnectionManager.prototype.connectPreference = function (transportParams, connectCount) {\n var _this = this;\n var preference = this.getTransportPreference();\n var preferenceTimeoutExpired = false;\n if (!Utils.arrIn(this.transports, preference)) {\n this.unpersistTransportPreference();\n this.connectImpl(transportParams, connectCount);\n }\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.connectPreference()', 'Trying to connect with stored transport preference ' + preference);\n var preferenceTimeout = setTimeout(function () {\n preferenceTimeoutExpired = true;\n if (!(_this.state.state === _this.states.connected.state)) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.connectPreference()', 'Shortcircuit connection attempt with ' + preference + ' failed; clearing preference and trying from scratch');\n /* Abort all connection attempts. (This also disconnects the active\n * protocol, but none exists if we're not in the connected state) */\n _this.disconnectAllTransports();\n /* Be quite agressive about clearing the stored preference if ever it doesn't work */\n _this.unpersistTransportPreference();\n }\n _this.connectImpl(transportParams, connectCount);\n }, this.options.timeouts.preferenceConnectTimeout);\n /* For connectPreference, just use the main host. If host fallback is needed, do it in connectBase.\n * The wstransport it will substitute the httphost for an appropriate wshost */\n transportParams.host = this.httpHosts[0];\n this.tryATransport(transportParams, preference, function (fatal, transport) {\n clearTimeout(preferenceTimeout);\n if (preferenceTimeoutExpired && transport) {\n /* Viable, but too late - connectImpl() will already be trying\n * connectBase, and we weren't in upgrade mode. Just remove the\n * onconnected listener and get rid of it */\n transport.off();\n transport.disconnect();\n Utils.arrDeleteValue(_this.pendingTransports, transport);\n }\n else if (!transport && !fatal) {\n /* Preference failed in a transport-specific way. Try more */\n _this.unpersistTransportPreference();\n _this.connectImpl(transportParams, connectCount);\n }\n /* If suceeded, or failed fatally, nothing to do */\n });\n };\n /**\n * Try to establish a transport on the base transport (the best transport\n * such that if it doesn't work, nothing will work) as determined through\n * static feature detection, checking for network connectivity and trying\n * fallback hosts if applicable.\n * @param transportParams\n */\n ConnectionManager.prototype.connectBase = function (transportParams, connectCount) {\n var _this = this;\n var giveUp = function (err) {\n _this.notifyState({ state: _this.states.connecting.failState, error: err });\n };\n var candidateHosts = this.httpHosts.slice();\n var hostAttemptCb = function (fatal, transport) {\n if (connectCount !== _this.connectCounter) {\n return;\n }\n if (!transport && !fatal) {\n tryFallbackHosts();\n }\n };\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.connectBase()', 'Trying to connect with base transport ' + this.baseTransport);\n /* first try to establish a connection with the priority host with http transport */\n var host = candidateHosts.shift();\n if (!host) {\n giveUp(new errorinfo_1.default('Unable to connect (no available host)', 80003, 404));\n return;\n }\n transportParams.host = host;\n /* this is what we'll be doing if the attempt for the main host fails */\n var tryFallbackHosts = function () {\n /* if there aren't any fallback hosts, fail */\n if (!candidateHosts.length) {\n giveUp(new errorinfo_1.default('Unable to connect (and no more fallback hosts to try)', 80003, 404));\n return;\n }\n /* before trying any fallback (or any remaining fallback) we decide if\n * there is a problem with the ably host, or there is a general connectivity\n * problem */\n if (!_this.realtime.http.checkConnectivity) {\n giveUp(new errorinfo_1.PartialErrorInfo('Internal error: Http.checkConnectivity not set', null, 500));\n return;\n }\n _this.realtime.http.checkConnectivity(function (err, connectivity) {\n if (connectCount !== _this.connectCounter) {\n return;\n }\n /* we know err won't happen but handle it here anyway */\n if (err) {\n giveUp(err);\n return;\n }\n if (!connectivity) {\n /* the internet isn't reachable, so don't try the fallback hosts */\n giveUp(new errorinfo_1.default('Unable to connect (network unreachable)', 80003, 404));\n return;\n }\n /* the network is there, so there's a problem with the main host, or\n * its dns. Try the fallback hosts. We could try them simultaneously but\n * that would potentially cause a huge spike in load on the load balancer */\n transportParams.host = Utils.arrPopRandomElement(candidateHosts);\n _this.tryATransport(transportParams, _this.baseTransport, hostAttemptCb);\n });\n };\n if (this.forceFallbackHost && candidateHosts.length) {\n this.forceFallbackHost = false;\n tryFallbackHosts();\n return;\n }\n this.tryATransport(transportParams, this.baseTransport, hostAttemptCb);\n };\n ConnectionManager.prototype.getUpgradePossibilities = function () {\n /* returns the subset of upgradeTransports to the right of the current\n * transport in upgradeTransports (if it's in there - if not, currentSerial\n * will be -1, so return upgradeTransports.slice(0) == upgradeTransports */\n var current = this.activeProtocol.getTransport().shortName;\n var currentSerial = Utils.arrIndexOf(this.upgradeTransports, current);\n return this.upgradeTransports.slice(currentSerial + 1);\n };\n ConnectionManager.prototype.upgradeIfNeeded = function (transportParams) {\n var _this = this;\n var upgradePossibilities = this.getUpgradePossibilities();\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.upgradeIfNeeded()', 'upgrade possibilities: ' + platform_1.default.Config.inspect(upgradePossibilities));\n if (!upgradePossibilities.length) {\n return;\n }\n Utils.arrForEach(upgradePossibilities, function (upgradeTransport) {\n /* Note: the transport may mutate the params, so give each transport a fresh one */\n var upgradeTransportParams = _this.createTransportParams(transportParams.host, 'upgrade');\n _this.tryATransport(upgradeTransportParams, upgradeTransport, noop);\n });\n };\n ConnectionManager.prototype.closeImpl = function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.closeImpl()', 'closing connection');\n this.cancelSuspendTimer();\n this.startTransitionTimer(this.states.closing);\n Utils.safeArrForEach(this.pendingTransports, function (transport) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.closeImpl()', 'Closing pending transport: ' + transport);\n if (transport)\n transport.close();\n });\n Utils.safeArrForEach(this.proposedTransports, function (transport) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.closeImpl()', 'Disposing of proposed transport: ' + transport);\n if (transport)\n transport.dispose();\n });\n if (this.activeProtocol) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.closeImpl()', 'Closing active transport: ' + this.activeProtocol.getTransport());\n this.activeProtocol.getTransport().close();\n }\n /* If there was an active transport, this will probably be\n * preempted by the notifyState call in deactivateTransport */\n this.notifyState({ state: 'closed' });\n };\n ConnectionManager.prototype.onAuthUpdated = function (tokenDetails, callback) {\n var _this = this;\n var _a;\n switch (this.state.state) {\n case 'connected': {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.onAuthUpdated()', 'Sending AUTH message on active transport');\n /* If there are any proposed/pending transports (eg an upgrade that\n * isn't yet scheduled for activation) that hasn't yet started syncing,\n * just to get rid of them & restart the upgrade with the new token, to\n * avoid a race condition. (If it has started syncing, the AUTH will be\n * queued until the upgrade is complete, so everything's fine) */\n if ((this.pendingTransports.length || this.proposedTransports.length) &&\n this.state !== this.states.synchronizing) {\n this.disconnectAllTransports(/* exceptActive: */ true);\n var transportParams_1 = this.activeProtocol.getTransport().params;\n platform_1.default.Config.nextTick(function () {\n if (_this.state.state === 'connected') {\n _this.upgradeIfNeeded(transportParams_1);\n }\n });\n }\n /* Do any transport-specific new-token action */\n var activeTransport = (_a = this.activeProtocol) === null || _a === void 0 ? void 0 : _a.getTransport();\n if (activeTransport && activeTransport.onAuthUpdated) {\n activeTransport.onAuthUpdated(tokenDetails);\n }\n var authMsg = protocolmessage_1.default.fromValues({\n action: actions.AUTH,\n auth: {\n accessToken: tokenDetails.token,\n },\n });\n this.send(authMsg);\n /* The answer will come back as either a connectiondetails event\n * (realtime sends a CONNECTED to acknowledge the reauth) or a\n * statechange to failed */\n var successListener_1 = function () {\n _this.off(failureListener_1);\n callback(null, tokenDetails);\n };\n var failureListener_1 = function (stateChange) {\n if (stateChange.current === 'failed') {\n _this.off(successListener_1);\n _this.off(failureListener_1);\n callback(stateChange.reason || _this.getStateError());\n }\n };\n this.once('connectiondetails', successListener_1);\n this.on('connectionstate', failureListener_1);\n break;\n }\n case 'connecting':\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.onAuthUpdated()', 'Aborting current connection attempts in order to start again with the new auth details');\n this.disconnectAllTransports();\n /* fallthrough to add statechange listener */\n default: {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.onAuthUpdated()', 'Connection state is ' + this.state.state + '; waiting until either connected or failed');\n var listener_1 = function (stateChange) {\n switch (stateChange.current) {\n case 'connected':\n _this.off(listener_1);\n callback(null, tokenDetails);\n break;\n case 'failed':\n case 'closed':\n case 'suspended':\n _this.off(listener_1);\n callback(stateChange.reason || _this.getStateError());\n break;\n default:\n /* ignore till we get either connected or failed */\n break;\n }\n };\n this.on('connectionstate', listener_1);\n if (this.state.state === 'connecting') {\n /* can happen if in the connecting state but no transport was pending\n * yet, so disconnectAllTransports did not trigger a disconnected state */\n this.startConnect();\n }\n else {\n this.requestState({ state: 'connecting' });\n }\n }\n }\n };\n ConnectionManager.prototype.disconnectAllTransports = function (exceptActive) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.disconnectAllTransports()', 'Disconnecting all transports' + (exceptActive ? ' except the active transport' : ''));\n /* This will prevent any connection procedure in an async part of one of its early stages from continuing */\n this.connectCounter++;\n Utils.safeArrForEach(this.pendingTransports, function (transport) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.disconnectAllTransports()', 'Disconnecting pending transport: ' + transport);\n if (transport)\n transport.disconnect();\n });\n this.pendingTransports = [];\n Utils.safeArrForEach(this.proposedTransports, function (transport) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.disconnectAllTransports()', 'Disposing of proposed transport: ' + transport);\n if (transport)\n transport.dispose();\n });\n this.proposedTransports = [];\n if (this.activeProtocol && !exceptActive) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.disconnectAllTransports()', 'Disconnecting active transport: ' + this.activeProtocol.getTransport());\n this.activeProtocol.getTransport().disconnect();\n }\n /* No need to notify state disconnected; disconnecting the active transport\n * will have that effect */\n };\n /******************\n * event queueing\n ******************/\n ConnectionManager.prototype.send = function (msg, queueEvent, callback) {\n callback = callback || noop;\n var state = this.state;\n if (state.sendEvents) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.send()', 'sending event');\n this.sendImpl(new protocol_1.PendingMessage(msg, callback));\n return;\n }\n var shouldQueue = (queueEvent && state.queueEvents) || state.forceQueueEvents;\n if (!shouldQueue) {\n var err = 'rejecting event, queueEvent was ' + queueEvent + ', state was ' + state.state;\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.send()', err);\n callback(this.errorReason || new errorinfo_1.default(err, 90000, 400));\n return;\n }\n if (logger_1.default.shouldLog(logger_1.default.LOG_MICRO)) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.send()', 'queueing msg; ' + protocolmessage_1.default.stringify(msg));\n }\n this.queue(msg, callback);\n };\n ConnectionManager.prototype.sendImpl = function (pendingMessage) {\n var msg = pendingMessage.message;\n /* If have already attempted to send this, resend with the same msgSerial,\n * so Ably can dedup if the previous send succeeded */\n if (pendingMessage.ackRequired && !pendingMessage.sendAttempted) {\n msg.msgSerial = this.msgSerial++;\n }\n try {\n this.activeProtocol.send(pendingMessage);\n }\n catch (e) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'ConnectionManager.sendImpl()', 'Unexpected exception in transport.send(): ' + e.stack);\n }\n };\n ConnectionManager.prototype.queue = function (msg, callback) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.queue()', 'queueing event');\n var lastQueued = this.queuedMessages.last();\n var maxSize = this.options.maxMessageSize;\n /* If have already attempted to send a message, don't merge more messages\n * into it, as if the previous send actually succeeded and realtime ignores\n * the dup, they'll be lost */\n if (lastQueued && !lastQueued.sendAttempted && bundleWith(lastQueued.message, msg, maxSize)) {\n if (!lastQueued.merged) {\n lastQueued.callback = multicaster_1.default.create([lastQueued.callback]);\n lastQueued.merged = true;\n }\n lastQueued.callback.push(callback);\n }\n else {\n this.queuedMessages.push(new protocol_1.PendingMessage(msg, callback));\n }\n };\n ConnectionManager.prototype.sendQueuedMessages = function () {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.sendQueuedMessages()', 'sending ' + this.queuedMessages.count() + ' queued messages');\n var pendingMessage;\n while ((pendingMessage = this.queuedMessages.shift()))\n this.sendImpl(pendingMessage);\n };\n ConnectionManager.prototype.queuePendingMessages = function (pendingMessages) {\n if (pendingMessages && pendingMessages.length) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.queuePendingMessages()', 'queueing ' + pendingMessages.length + ' pending messages');\n this.queuedMessages.prepend(pendingMessages);\n }\n };\n ConnectionManager.prototype.failQueuedMessages = function (err) {\n var numQueued = this.queuedMessages.count();\n if (numQueued > 0) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'ConnectionManager.failQueuedMessages()', 'failing ' + numQueued + ' queued messages, err = ' + Utils.inspectError(err));\n this.queuedMessages.completeAllMessages(err);\n }\n };\n ConnectionManager.prototype.onChannelMessage = function (message, transport) {\n var onActiveTransport = this.activeProtocol && transport === this.activeProtocol.getTransport(), onUpgradeTransport = Utils.arrIn(this.pendingTransports, transport) && this.state == this.states.synchronizing;\n /* As the lib now has a period where the upgrade transport is synced but\n * before it's become active (while waiting for the old one to become\n * idle), message can validly arrive on it even though it isn't active */\n if (onActiveTransport || onUpgradeTransport) {\n this.realtime.channels.onChannelMessage(message);\n }\n else {\n // Message came in on a defunct transport. Allow only acks, nacks, & errors for outstanding\n // messages, no new messages (as sync has been sent on new transport so new messages will\n // be resent there, or connection has been closed so don't want new messages)\n if (Utils.arrIndexOf([actions.ACK, actions.NACK, actions.ERROR], message.action) > -1) {\n this.realtime.channels.onChannelMessage(message);\n }\n else {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'ConnectionManager.onChannelMessage()', 'received message ' + JSON.stringify(message) + 'on defunct transport; discarding');\n }\n }\n };\n ConnectionManager.prototype.ping = function (transport, callback) {\n var _this = this;\n /* if transport is specified, try that */\n if (transport) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.ping()', 'transport = ' + transport);\n var onTimeout = function () {\n transport.off('heartbeat', onHeartbeat_1);\n callback(new errorinfo_1.default('Timeout waiting for heartbeat response', 50000, 500));\n };\n var pingStart_1 = Utils.now(), id_1 = Utils.cheapRandStr();\n var onHeartbeat_1 = function (responseId) {\n if (responseId === id_1) {\n transport.off('heartbeat', onHeartbeat_1);\n clearTimeout(timer_1);\n var responseTime = Utils.now() - pingStart_1;\n callback(null, responseTime);\n }\n };\n var timer_1 = setTimeout(onTimeout, this.options.timeouts.realtimeRequestTimeout);\n transport.on('heartbeat', onHeartbeat_1);\n transport.ping(id_1);\n return;\n }\n /* if we're not connected, don't attempt */\n if (this.state.state !== 'connected') {\n callback(new errorinfo_1.default('Unable to ping service; not connected', 40000, 400));\n return;\n }\n /* no transport was specified, so use the current (connected) one\n * but ensure that we retry if the transport is superseded before we complete */\n var completed = false;\n var onPingComplete = function (err, responseTime) {\n _this.off('transport.active', onTransportActive);\n if (!completed) {\n completed = true;\n callback(err, responseTime);\n }\n };\n var onTransportActive = function () {\n if (!completed) {\n /* ensure that no callback happens for the currently outstanding operation */\n completed = true;\n /* repeat but picking up the new transport */\n platform_1.default.Config.nextTick(function () {\n _this.ping(null, callback);\n });\n }\n };\n this.on('transport.active', onTransportActive);\n this.ping(this.activeProtocol.getTransport(), onPingComplete);\n };\n ConnectionManager.prototype.abort = function (error) {\n this.activeProtocol.getTransport().fail(error);\n };\n ConnectionManager.prototype.registerProposedTransport = function (transport) {\n this.proposedTransports.push(transport);\n };\n ConnectionManager.prototype.getTransportPreference = function () {\n var _a, _b;\n return this.transportPreference || (haveWebStorage() && ((_b = (_a = platform_1.default.WebStorage) === null || _a === void 0 ? void 0 : _a.get) === null || _b === void 0 ? void 0 : _b.call(_a, transportPreferenceName)));\n };\n ConnectionManager.prototype.persistTransportPreference = function (transport) {\n var _a, _b;\n if (Utils.arrIn(defaults_1.default.upgradeTransports, transport.shortName)) {\n this.transportPreference = transport.shortName;\n if (haveWebStorage()) {\n (_b = (_a = platform_1.default.WebStorage) === null || _a === void 0 ? void 0 : _a.set) === null || _b === void 0 ? void 0 : _b.call(_a, transportPreferenceName, transport.shortName);\n }\n }\n };\n ConnectionManager.prototype.unpersistTransportPreference = function () {\n var _a, _b;\n this.transportPreference = null;\n if (haveWebStorage()) {\n (_b = (_a = platform_1.default.WebStorage) === null || _a === void 0 ? void 0 : _a.remove) === null || _b === void 0 ? void 0 : _b.call(_a, transportPreferenceName);\n }\n };\n /* This method is only used during connection attempts, so implements RSA4c1, RSA4c2,\n * and RSA4d. It is generally not invoked for serverside-triggered reauths or manual\n * reauths, so RSA4c3 does not apply, except (per per RSA4d1) in the case that the auth\n * server returns 403. */\n ConnectionManager.prototype.actOnErrorFromAuthorize = function (err) {\n if (err.code === 40171) {\n /* No way to reauth */\n this.notifyState({ state: 'failed', error: err });\n }\n else if (err.code === 40102) {\n this.notifyState({ state: 'failed', error: err });\n }\n else if (err.statusCode === HttpStatusCodes_1.default.Forbidden) {\n var msg = 'Client configured authentication provider returned 403; failing the connection';\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'ConnectionManager.actOnErrorFromAuthorize()', msg);\n this.notifyState({ state: 'failed', error: new errorinfo_1.default(msg, 80019, 403, err) });\n }\n else {\n var msg = 'Client configured authentication provider request failed';\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'ConnectionManager.actOnErrorFromAuthorize', msg);\n this.notifyState({ state: this.state.failState, error: new errorinfo_1.default(msg, 80019, 401, err) });\n }\n };\n ConnectionManager.prototype.onConnectionDetailsUpdate = function (connectionDetails, transport) {\n if (!connectionDetails) {\n return;\n }\n this.connectionDetails = connectionDetails;\n if (connectionDetails.maxMessageSize) {\n this.options.maxMessageSize = connectionDetails.maxMessageSize;\n }\n var clientId = connectionDetails.clientId;\n if (clientId) {\n var err = this.realtime.auth._uncheckedSetClientId(clientId);\n if (err) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'ConnectionManager.onConnectionDetailsUpdate()', err.message);\n /* Errors setting the clientId are fatal to the connection */\n transport.fail(err);\n return;\n }\n }\n var connectionStateTtl = connectionDetails.connectionStateTtl;\n if (connectionStateTtl) {\n this.connectionStateTtl = connectionStateTtl;\n }\n this.maxIdleInterval = connectionDetails.maxIdleInterval;\n this.emit('connectiondetails', connectionDetails);\n };\n /*********************\n * transport management\n *********************/\n ConnectionManager.supportedTransports = {};\n return ConnectionManager;\n}(eventemitter_1.default));\nexports.default = ConnectionManager;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13)))\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar eventemitter_1 = tslib_1.__importDefault(__webpack_require__(7));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar MessageQueue = /** @class */ (function (_super) {\n tslib_1.__extends(MessageQueue, _super);\n function MessageQueue() {\n var _this = _super.call(this) || this;\n _this.messages = [];\n return _this;\n }\n MessageQueue.prototype.count = function () {\n return this.messages.length;\n };\n MessageQueue.prototype.push = function (message) {\n this.messages.push(message);\n };\n MessageQueue.prototype.shift = function () {\n return this.messages.shift();\n };\n MessageQueue.prototype.last = function () {\n return this.messages[this.messages.length - 1];\n };\n MessageQueue.prototype.copyAll = function () {\n return this.messages.slice();\n };\n MessageQueue.prototype.append = function (messages) {\n this.messages.push.apply(this.messages, messages);\n };\n MessageQueue.prototype.prepend = function (messages) {\n this.messages.unshift.apply(this.messages, messages);\n };\n MessageQueue.prototype.completeMessages = function (serial, count, err) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'MessageQueue.completeMessages()', 'serial = ' + serial + '; count = ' + count);\n err = err || null;\n var messages = this.messages;\n if (messages.length === 0) {\n throw new Error('MessageQueue.completeMessages(): completeMessages called on any empty MessageQueue');\n }\n var first = messages[0];\n if (first) {\n var startSerial = first.message.msgSerial;\n var endSerial = serial + count; /* the serial of the first message that is *not* the subject of this call */\n if (endSerial > startSerial) {\n var completeMessages = messages.splice(0, endSerial - startSerial);\n for (var _i = 0, completeMessages_1 = completeMessages; _i < completeMessages_1.length; _i++) {\n var message = completeMessages_1[_i];\n message.callback(err);\n }\n }\n if (messages.length == 0)\n this.emit('idle');\n }\n };\n MessageQueue.prototype.completeAllMessages = function (err) {\n this.completeMessages(0, Number.MAX_SAFE_INTEGER || Number.MAX_VALUE, err);\n };\n MessageQueue.prototype.resetSendAttempted = function () {\n for (var _i = 0, _a = this.messages; _i < _a.length; _i++) {\n var msg = _a[_i];\n msg.sendAttempted = false;\n }\n };\n MessageQueue.prototype.clear = function () {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'MessageQueue.clear()', 'clearing ' + this.messages.length + ' messages');\n this.messages = [];\n this.emit('idle');\n };\n return MessageQueue;\n}(eventemitter_1.default));\nexports.default = MessageQueue;\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ConnectionStateChange = /** @class */ (function () {\n function ConnectionStateChange(previous, current, retryIn, reason) {\n this.previous = previous;\n this.current = current;\n if (retryIn)\n this.retryIn = retryIn;\n if (reason)\n this.reason = reason;\n }\n return ConnectionStateChange;\n}());\nexports.default = ConnectionStateChange;\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar protocolmessage_1 = tslib_1.__importDefault(__webpack_require__(10));\nvar eventemitter_1 = tslib_1.__importDefault(__webpack_require__(7));\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar channel_1 = tslib_1.__importDefault(__webpack_require__(33));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar realtimepresence_1 = tslib_1.__importDefault(__webpack_require__(54));\nvar message_1 = tslib_1.__importDefault(__webpack_require__(9));\nvar channelstatechange_1 = tslib_1.__importDefault(__webpack_require__(39));\nvar errorinfo_1 = tslib_1.__importStar(__webpack_require__(4));\nvar presencemessage_1 = tslib_1.__importDefault(__webpack_require__(16));\nvar connectionerrors_1 = tslib_1.__importDefault(__webpack_require__(21));\nvar actions = protocolmessage_1.default.Action;\nvar noop = function () { };\nfunction validateChannelOptions(options) {\n if (options && 'params' in options && !Utils.isObject(options.params)) {\n return new errorinfo_1.default('options.params must be an object', 40000, 400);\n }\n if (options && 'modes' in options) {\n if (!Utils.isArray(options.modes)) {\n return new errorinfo_1.default('options.modes must be an array', 40000, 400);\n }\n for (var i = 0; i < options.modes.length; i++) {\n var currentMode = options.modes[i];\n if (!currentMode ||\n typeof currentMode !== 'string' ||\n !Utils.arrIn(protocolmessage_1.default.channelModes, String.prototype.toUpperCase.call(currentMode))) {\n return new errorinfo_1.default('Invalid channel mode: ' + currentMode, 40000, 400);\n }\n }\n }\n}\nvar RealtimeChannel = /** @class */ (function (_super) {\n tslib_1.__extends(RealtimeChannel, _super);\n function RealtimeChannel(realtime, name, options) {\n var _this = _super.call(this, realtime, name, options) || this;\n _this.retryCount = 0;\n _this.history = function (params, callback) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'RealtimeChannel.history()', 'channel = ' + this.name);\n /* params and callback are optional; see if params contains the callback */\n if (callback === undefined) {\n if (typeof params == 'function') {\n callback = params;\n params = null;\n }\n else {\n if (this.rest.options.promises) {\n return Utils.promisify(this, 'history', arguments);\n }\n callback = noop;\n }\n }\n if (params && params.untilAttach) {\n if (this.state !== 'attached') {\n callback(new errorinfo_1.default('option untilAttach requires the channel to be attached', 40000, 400));\n return;\n }\n if (!this.properties.attachSerial) {\n callback(new errorinfo_1.default('untilAttach was specified and channel is attached, but attachSerial is not defined', 40000, 400));\n return;\n }\n delete params.untilAttach;\n params.from_serial = this.properties.attachSerial;\n }\n channel_1.default.prototype._history.call(this, params, callback);\n };\n _this.whenState = (function (state, listener) {\n return eventemitter_1.default.prototype.whenState.call(_this, state, _this.state, listener);\n });\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'RealtimeChannel()', 'started; name = ' + name);\n _this.realtime = realtime;\n _this.presence = new realtimepresence_1.default(_this);\n _this.connectionManager = realtime.connection.connectionManager;\n _this.state = 'initialized';\n _this.subscriptions = new eventemitter_1.default();\n _this.syncChannelSerial = undefined;\n _this.properties = {\n attachSerial: undefined,\n channelSerial: undefined,\n };\n _this.setOptions(options);\n _this.errorReason = null;\n _this._requestedFlags = null;\n _this._mode = null;\n _this._attachResume = false;\n _this._decodingContext = {\n channelOptions: _this.channelOptions,\n plugins: realtime.options.plugins || {},\n baseEncodedPreviousPayload: undefined,\n };\n _this._lastPayload = {\n messageId: null,\n protocolMessageChannelSerial: null,\n decodeFailureRecoveryInProgress: null,\n };\n /* Only differences between this and the public event emitter is that this emits an\n * update event for all ATTACHEDs, whether resumed or not */\n _this._allChannelChanges = new eventemitter_1.default();\n return _this;\n }\n RealtimeChannel.prototype.invalidStateError = function () {\n return new errorinfo_1.default('Channel operation failed as channel state is ' + this.state, 90001, 400, this.errorReason || undefined);\n };\n RealtimeChannel.processListenerArgs = function (args) {\n /* [event], listener, [callback] */\n args = Array.prototype.slice.call(args);\n if (typeof args[0] === 'function') {\n args.unshift(null);\n }\n if (args[args.length - 1] == undefined) {\n args.pop();\n }\n return args;\n };\n RealtimeChannel.prototype.setOptions = function (options, callback) {\n var previousChannelOptions = this.channelOptions;\n if (!callback) {\n if (this.rest.options.promises) {\n return Utils.promisify(this, 'setOptions', arguments);\n }\n }\n var _callback = callback ||\n function (err) {\n if (err) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'RealtimeChannel.setOptions()', 'Set options failed: ' + err.toString());\n }\n };\n var err = validateChannelOptions(options);\n if (err) {\n _callback(err);\n return;\n }\n channel_1.default.prototype.setOptions.call(this, options);\n if (this._decodingContext)\n this._decodingContext.channelOptions = this.channelOptions;\n if (this._shouldReattachToSetOptions(options, previousChannelOptions)) {\n /* This does not just do _attach(true, null, callback) because that would put us\n * into the 'attaching' state until we receive the new attached, which is\n * conceptually incorrect: we are still attached, we just have a pending request to\n * change some channel params. Per RTL17 going into the attaching state would mean\n * rejecting messages until we have confirmation that the options have changed,\n * which would unnecessarily lose message continuity. */\n this.attachImpl();\n // Ignore 'attaching' -- could be just due to to a resume & reattach, should not\n // call back setOptions until we're definitely attached with the new options (or\n // else in a terminal state)\n this._allChannelChanges.once(['attached', 'update', 'detached', 'failed'], function (stateChange) {\n switch (this.event) {\n case 'update':\n case 'attached':\n _callback === null || _callback === void 0 ? void 0 : _callback(null);\n return;\n default:\n _callback === null || _callback === void 0 ? void 0 : _callback(stateChange.reason);\n return;\n }\n });\n }\n else {\n _callback();\n }\n };\n RealtimeChannel.prototype._shouldReattachToSetOptions = function (options, prevOptions) {\n if (!(this.state === 'attached' || this.state === 'attaching')) {\n return false;\n }\n if (options === null || options === void 0 ? void 0 : options.params) {\n // Don't check against the `agent` param - it isn't returned in the ATTACHED message\n var requestedParams = omitAgent(options.params);\n var existingParams = omitAgent(prevOptions.params);\n if (Object.keys(requestedParams).length !== Object.keys(existingParams).length) {\n return true;\n }\n if (!Utils.shallowEquals(existingParams, requestedParams)) {\n return true;\n }\n }\n if (options === null || options === void 0 ? void 0 : options.modes) {\n if (!prevOptions.modes || !Utils.arrEquals(options.modes, prevOptions.modes)) {\n return true;\n }\n }\n return false;\n };\n RealtimeChannel.prototype.publish = function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var messages = args[0];\n var argCount = args.length;\n var callback = args[argCount - 1];\n if (typeof callback !== 'function') {\n if (this.realtime.options.promises) {\n return Utils.promisify(this, 'publish', arguments);\n }\n callback = noop;\n ++argCount;\n }\n if (!this.connectionManager.activeState()) {\n callback(this.connectionManager.getError());\n return;\n }\n if (argCount == 2) {\n if (Utils.isObject(messages))\n messages = [message_1.default.fromValues(messages)];\n else if (Utils.isArray(messages))\n messages = message_1.default.fromValuesArray(messages);\n else\n throw new errorinfo_1.default('The single-argument form of publish() expects a message object or an array of message objects', 40013, 400);\n }\n else {\n messages = [message_1.default.fromValues({ name: args[0], data: args[1] })];\n }\n var maxMessageSize = this.realtime.options.maxMessageSize;\n message_1.default.encodeArray(messages, this.channelOptions, function (err) {\n if (err) {\n callback(err);\n return;\n }\n /* RSL1i */\n var size = message_1.default.getMessagesSize(messages);\n if (size > maxMessageSize) {\n callback(new errorinfo_1.default('Maximum size of messages that can be published at once exceeded ( was ' +\n size +\n ' bytes; limit is ' +\n maxMessageSize +\n ' bytes)', 40009, 400));\n return;\n }\n _this.__publish(messages, callback);\n });\n };\n // Double underscore used to prevent type conflict with underlying Channel._publish method\n RealtimeChannel.prototype.__publish = function (messages, callback) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'RealtimeChannel.publish()', 'message count = ' + messages.length);\n var state = this.state;\n switch (state) {\n case 'failed':\n case 'suspended':\n callback(errorinfo_1.default.fromValues(this.invalidStateError()));\n break;\n default: {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'RealtimeChannel.publish()', 'sending message; channel state is ' + state);\n var msg = new protocolmessage_1.default();\n msg.action = actions.MESSAGE;\n msg.channel = this.name;\n msg.messages = messages;\n this.sendMessage(msg, callback);\n break;\n }\n }\n };\n RealtimeChannel.prototype.onEvent = function (messages) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'RealtimeChannel.onEvent()', 'received message');\n var subscriptions = this.subscriptions;\n for (var i = 0; i < messages.length; i++) {\n var message = messages[i];\n subscriptions.emit(message.name, message);\n }\n };\n RealtimeChannel.prototype.attach = function (flags, callback) {\n var _flags;\n if (typeof flags === 'function') {\n callback = flags;\n _flags = null;\n }\n else {\n _flags = flags;\n }\n if (!callback) {\n if (this.realtime.options.promises) {\n return Utils.promisify(this, 'attach', arguments);\n }\n callback = function (err) {\n if (err) {\n logger_1.default.logAction(logger_1.default.LOG_MAJOR, 'RealtimeChannel.attach()', 'Channel attach failed: ' + err.toString());\n }\n };\n }\n if (_flags) {\n logger_1.default.deprecated('The ability to pass an array of channel mode flags as the first argument of `RealtimeChannel.attach()`', 'To set channel mode flags, populate the `modes` property of the channel options object that you pass to `Channels.get()` or `RealtimeChannel.setOptions()`.');\n /* If flags requested, always do a re-attach. TODO only do this if\n * current mode differs from requested mode */\n this._requestedFlags = _flags;\n }\n else if (this.state === 'attached') {\n callback(null, null);\n return;\n }\n this._attach(false, null, callback);\n };\n RealtimeChannel.prototype._attach = function (forceReattach, attachReason, callback) {\n if (!callback) {\n callback = function (err) {\n if (err) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'RealtimeChannel._attach()', 'Channel attach failed: ' + err.toString());\n }\n };\n }\n var connectionManager = this.connectionManager;\n if (!connectionManager.activeState()) {\n callback(connectionManager.getError());\n return;\n }\n if (this.state !== 'attaching' || forceReattach) {\n this.requestState('attaching', attachReason);\n }\n this.once(function (stateChange) {\n switch (this.event) {\n case 'attached':\n callback === null || callback === void 0 ? void 0 : callback(null, stateChange);\n break;\n case 'detached':\n case 'suspended':\n case 'failed':\n callback === null || callback === void 0 ? void 0 : callback(stateChange.reason ||\n connectionManager.getError() ||\n new errorinfo_1.default('Unable to attach; reason unknown; state = ' + this.event, 90000, 500));\n break;\n case 'detaching':\n callback === null || callback === void 0 ? void 0 : callback(new errorinfo_1.default('Attach request superseded by a subsequent detach request', 90000, 409));\n break;\n }\n });\n };\n RealtimeChannel.prototype.attachImpl = function () {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'RealtimeChannel.attachImpl()', 'sending ATTACH message');\n var attachMsg = protocolmessage_1.default.fromValues({\n action: actions.ATTACH,\n channel: this.name,\n params: this.channelOptions.params,\n // RTL4c1: Includes the channel serial to resume from a previous message\n // or attachment.\n channelSerial: this.properties.channelSerial,\n });\n if (this._requestedFlags) {\n attachMsg.encodeModesToFlags(this._requestedFlags);\n }\n else if (this.channelOptions.modes) {\n attachMsg.encodeModesToFlags(Utils.allToUpperCase(this.channelOptions.modes));\n }\n if (this._attachResume) {\n attachMsg.setFlag('ATTACH_RESUME');\n }\n if (this._lastPayload.decodeFailureRecoveryInProgress) {\n attachMsg.channelSerial = this._lastPayload.protocolMessageChannelSerial;\n }\n this.sendMessage(attachMsg, noop);\n };\n RealtimeChannel.prototype.detach = function (callback) {\n if (!callback) {\n if (this.realtime.options.promises) {\n return Utils.promisify(this, 'detach', arguments);\n }\n callback = noop;\n }\n var connectionManager = this.connectionManager;\n if (!connectionManager.activeState()) {\n callback(connectionManager.getError());\n return;\n }\n switch (this.state) {\n case 'suspended':\n this.notifyState('detached');\n callback();\n break;\n case 'detached':\n callback();\n break;\n case 'failed':\n callback(new errorinfo_1.default('Unable to detach; channel state = failed', 90001, 400));\n break;\n default:\n this.requestState('detaching');\n // eslint-disable-next-line no-fallthrough\n case 'detaching':\n this.once(function (stateChange) {\n switch (this.event) {\n case 'detached':\n callback();\n break;\n case 'attached':\n case 'suspended':\n case 'failed':\n callback(stateChange.reason ||\n connectionManager.getError() ||\n new errorinfo_1.default('Unable to detach; reason unknown; state = ' + this.event, 90000, 500));\n break;\n case 'attaching':\n callback(new errorinfo_1.default('Detach request superseded by a subsequent attach request', 90000, 409));\n break;\n }\n });\n }\n };\n RealtimeChannel.prototype.detachImpl = function (callback) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'RealtimeChannel.detach()', 'sending DETACH message');\n var msg = protocolmessage_1.default.fromValues({ action: actions.DETACH, channel: this.name });\n this.sendMessage(msg, callback || noop);\n };\n RealtimeChannel.prototype.subscribe = function () {\n var args = []; /* [event], listener, [callback] */\n for (var _i = 0 /* [event], listener, [callback] */; _i < arguments.length /* [event], listener, [callback] */; _i++ /* [event], listener, [callback] */) {\n args[_i] = arguments[_i]; /* [event], listener, [callback] */\n }\n var _a = RealtimeChannel.processListenerArgs(args), event = _a[0], listener = _a[1], callback = _a[2];\n if (!callback && this.realtime.options.promises) {\n return Utils.promisify(this, 'subscribe', [event, listener]);\n }\n if (this.state === 'failed') {\n callback === null || callback === void 0 ? void 0 : callback(errorinfo_1.default.fromValues(this.invalidStateError()));\n return;\n }\n // Filtered\n if (event && typeof event === 'object' && !Array.isArray(event)) {\n this._subscribeFilter(event, listener);\n }\n else {\n this.subscriptions.on(event, listener);\n }\n return this.attach(callback || noop);\n };\n RealtimeChannel.prototype._subscribeFilter = function (filter, listener) {\n var filteredListener = function (m) {\n var _a, _b, _c, _d, _e, _f;\n var mapping = {\n name: m.name,\n refTimeserial: (_b = (_a = m.extras) === null || _a === void 0 ? void 0 : _a.ref) === null || _b === void 0 ? void 0 : _b.timeserial,\n refType: (_d = (_c = m.extras) === null || _c === void 0 ? void 0 : _c.ref) === null || _d === void 0 ? void 0 : _d.type,\n isRef: !!((_f = (_e = m.extras) === null || _e === void 0 ? void 0 : _e.ref) === null || _f === void 0 ? void 0 : _f.timeserial),\n clientId: m.clientId,\n };\n // Check if any values are defined in the filter and if they match the value in the message object\n if (Object.entries(filter).find(function (_a) {\n var key = _a[0], value = _a[1];\n return value !== undefined ? mapping[key] !== value : false;\n })) {\n return;\n }\n listener(m);\n };\n this._addFilteredSubscription(filter, listener, filteredListener);\n this.subscriptions.on(filteredListener);\n };\n // Adds a new filtered subscription\n RealtimeChannel.prototype._addFilteredSubscription = function (filter, realListener, filteredListener) {\n var _a;\n if (!this.filteredSubscriptions) {\n this.filteredSubscriptions = new Map();\n }\n if (this.filteredSubscriptions.has(realListener)) {\n var realListenerMap = this.filteredSubscriptions.get(realListener);\n // Add the filtered listener to the map, or append to the array if this filter has already been used\n realListenerMap.set(filter, ((_a = realListenerMap === null || realListenerMap === void 0 ? void 0 : realListenerMap.get(filter)) === null || _a === void 0 ? void 0 : _a.concat(filteredListener)) || [filteredListener]);\n }\n else {\n this.filteredSubscriptions.set(realListener, new Map([[filter, [filteredListener]]]));\n }\n };\n RealtimeChannel.prototype._getAndDeleteFilteredSubscriptions = function (filter, realListener) {\n var _this = this;\n // No filtered subscriptions map means there has been no filtered subscriptions yet, so return nothing\n if (!this.filteredSubscriptions) {\n return [];\n }\n // Only a filter is passed in with no specific listener\n if (!realListener && filter) {\n // Return each listener which is attached to the specified filter object\n return Array.from(this.filteredSubscriptions.entries())\n .map(function (_a) {\n var _b;\n var key = _a[0], filterMaps = _a[1];\n // Get (then delete) the maps matching this filter\n var listenerMaps = filterMaps.get(filter);\n filterMaps.delete(filter);\n // Clear the parent if nothing is left\n if (filterMaps.size === 0) {\n (_b = _this.filteredSubscriptions) === null || _b === void 0 ? void 0 : _b.delete(key);\n }\n return listenerMaps;\n })\n .reduce(function (prev, cur) {\n var _a;\n return (cur ? (_a = prev).concat.apply(_a, cur) : prev);\n }, []);\n }\n // No subscriptions for this listener\n if (!realListener || !this.filteredSubscriptions.has(realListener)) {\n return [];\n }\n var realListenerMap = this.filteredSubscriptions.get(realListener);\n // If no filter is specified return all listeners using that function\n if (!filter) {\n // array.flat is not available unless we support es2019 or higher\n var listeners_1 = Array.from(realListenerMap.values()).reduce(function (prev, cur) { return prev.concat.apply(prev, cur); }, []);\n // remove the listener from the map\n this.filteredSubscriptions.delete(realListener);\n return listeners_1;\n }\n var listeners = realListenerMap.get(filter);\n realListenerMap.delete(filter);\n return listeners || [];\n };\n RealtimeChannel.prototype.unsubscribe = function () {\n var _this = this;\n var _a;\n var args = []; /* [event], listener */\n for (var _i = 0 /* [event], listener */; _i < arguments.length /* [event], listener */; _i++ /* [event], listener */) {\n args[_i] = arguments[_i]; /* [event], listener */\n }\n var _b = RealtimeChannel.processListenerArgs(args), event = _b[0], listener = _b[1];\n // If we either have a filtered listener, a filter or both we need to do additional processing to find the original function(s)\n if ((typeof event === 'object' && !listener) || ((_a = this.filteredSubscriptions) === null || _a === void 0 ? void 0 : _a.has(listener))) {\n this._getAndDeleteFilteredSubscriptions(event, listener).forEach(function (l) { return _this.subscriptions.off(l); });\n return;\n }\n this.subscriptions.off(event, listener);\n };\n RealtimeChannel.prototype.sync = function () {\n /* check preconditions */\n switch (this.state) {\n case 'initialized':\n case 'detaching':\n case 'detached':\n throw new errorinfo_1.PartialErrorInfo('Unable to sync to channel; not attached', 40000);\n default:\n }\n var connectionManager = this.connectionManager;\n if (!connectionManager.activeState()) {\n throw connectionManager.getError();\n }\n /* send sync request */\n var syncMessage = protocolmessage_1.default.fromValues({ action: actions.SYNC, channel: this.name });\n if (this.syncChannelSerial) {\n syncMessage.channelSerial = this.syncChannelSerial;\n }\n connectionManager.send(syncMessage);\n };\n RealtimeChannel.prototype.sendMessage = function (msg, callback) {\n this.connectionManager.send(msg, this.realtime.options.queueMessages, callback);\n };\n RealtimeChannel.prototype.sendPresence = function (presence, callback) {\n var msg = protocolmessage_1.default.fromValues({\n action: actions.PRESENCE,\n channel: this.name,\n presence: Utils.isArray(presence)\n ? presencemessage_1.default.fromValuesArray(presence)\n : [presencemessage_1.default.fromValues(presence)],\n });\n this.sendMessage(msg, callback);\n };\n RealtimeChannel.prototype.onMessage = function (message) {\n if (message.action === actions.ATTACHED ||\n message.action === actions.MESSAGE ||\n message.action === actions.PRESENCE) {\n // RTL15b\n this.setChannelSerial(message.channelSerial);\n }\n var syncChannelSerial, isSync = false;\n switch (message.action) {\n case actions.ATTACHED: {\n this.properties.attachSerial = message.channelSerial;\n this._mode = message.getMode();\n this.params = message.params || {};\n var modesFromFlags = message.decodeModesFromFlags();\n this.modes = (modesFromFlags && Utils.allToLowerCase(modesFromFlags)) || undefined;\n var resumed = message.hasFlag('RESUMED');\n var hasPresence = message.hasFlag('HAS_PRESENCE');\n var hasBacklog = message.hasFlag('HAS_BACKLOG');\n if (this.state === 'attached') {\n if (!resumed) {\n /* On a loss of continuity, the presence set needs to be re-synced */\n this.presence.onAttached(hasPresence);\n }\n var change = new channelstatechange_1.default(this.state, this.state, resumed, hasBacklog, message.error);\n this._allChannelChanges.emit('update', change);\n if (!resumed || this.channelOptions.updateOnAttached) {\n this.emit('update', change);\n }\n }\n else if (this.state === 'detaching') {\n /* RTL5i: re-send DETACH and remain in the 'detaching' state */\n this.checkPendingState();\n }\n else {\n this.notifyState('attached', message.error, resumed, hasPresence, hasBacklog);\n }\n break;\n }\n case actions.DETACHED: {\n var detachErr = message.error\n ? errorinfo_1.default.fromValues(message.error)\n : new errorinfo_1.default('Channel detached', 90001, 404);\n if (this.state === 'detaching') {\n this.notifyState('detached', detachErr);\n }\n else if (this.state === 'attaching') {\n /* Only retry immediately if we were previously attached. If we were\n * attaching, go into suspended, fail messages, and wait a few seconds\n * before retrying */\n this.notifyState('suspended', detachErr);\n }\n else {\n this.requestState('attaching', detachErr);\n }\n break;\n }\n case actions.SYNC:\n /* syncs can have channelSerials, but might not if the sync is one page long */\n isSync = true;\n syncChannelSerial = this.syncChannelSerial = message.channelSerial;\n /* syncs can happen on channels with no presence data as part of connection\n * resuming, in which case protocol message has no presence property */\n if (!message.presence)\n break;\n // eslint-disable-next-line no-fallthrough\n case actions.PRESENCE: {\n var presence = message.presence;\n var id = message.id, connectionId = message.connectionId, timestamp = message.timestamp;\n var options = this.channelOptions;\n var presenceMsg = void 0;\n for (var i = 0; i < presence.length; i++) {\n try {\n presenceMsg = presence[i];\n presencemessage_1.default.decode(presenceMsg, options);\n if (!presenceMsg.connectionId)\n presenceMsg.connectionId = connectionId;\n if (!presenceMsg.timestamp)\n presenceMsg.timestamp = timestamp;\n if (!presenceMsg.id)\n presenceMsg.id = id + ':' + i;\n }\n catch (e) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'RealtimeChannel.onMessage()', e.toString());\n }\n }\n this.presence.setPresence(presence, isSync, syncChannelSerial);\n break;\n }\n case actions.MESSAGE: {\n //RTL17\n if (this.state !== 'attached') {\n logger_1.default.logAction(logger_1.default.LOG_MAJOR, 'RealtimeChannel.onMessage()', 'Message \"' +\n message.id +\n '\" skipped as this channel \"' +\n this.name +\n '\" state is not \"attached\" (state is \"' +\n this.state +\n '\").');\n return;\n }\n var messages = message.messages, firstMessage = messages[0], lastMessage = messages[messages.length - 1], id = message.id, connectionId = message.connectionId, timestamp = message.timestamp;\n if (firstMessage.extras &&\n firstMessage.extras.delta &&\n firstMessage.extras.delta.from !== this._lastPayload.messageId) {\n var msg = 'Delta message decode failure - previous message not available for message \"' +\n message.id +\n '\" on this channel \"' +\n this.name +\n '\".';\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'RealtimeChannel.onMessage()', msg);\n this._startDecodeFailureRecovery(new errorinfo_1.default(msg, 40018, 400));\n break;\n }\n for (var i = 0; i < messages.length; i++) {\n var msg = messages[i];\n try {\n message_1.default.decode(msg, this._decodingContext);\n }\n catch (e) {\n /* decrypt failed .. the most likely cause is that we have the wrong key */\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'RealtimeChannel.onMessage()', e.toString());\n switch (e.code) {\n case 40018:\n /* decode failure */\n this._startDecodeFailureRecovery(e);\n return;\n case 40019:\n /* No vcdiff plugin passed in - no point recovering, give up */\n // eslint-disable-next-line no-fallthrough\n case 40021:\n /* Browser does not support deltas, similarly no point recovering */\n this.notifyState('failed', e);\n return;\n }\n }\n if (!msg.connectionId)\n msg.connectionId = connectionId;\n if (!msg.timestamp)\n msg.timestamp = timestamp;\n if (!msg.id)\n msg.id = id + ':' + i;\n }\n this._lastPayload.messageId = lastMessage.id;\n this._lastPayload.protocolMessageChannelSerial = message.channelSerial;\n this.onEvent(messages);\n break;\n }\n case actions.ERROR: {\n /* there was a channel-specific error */\n var err = message.error;\n if (err && err.code == 80016) {\n /* attach/detach operation attempted on superseded transport handle */\n this.checkPendingState();\n }\n else {\n this.notifyState('failed', errorinfo_1.default.fromValues(err));\n }\n break;\n }\n default:\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'RealtimeChannel.onMessage()', 'Fatal protocol error: unrecognised action (' + message.action + ')');\n this.connectionManager.abort(connectionerrors_1.default.unknownChannelErr());\n }\n };\n RealtimeChannel.prototype._startDecodeFailureRecovery = function (reason) {\n var _this = this;\n if (!this._lastPayload.decodeFailureRecoveryInProgress) {\n logger_1.default.logAction(logger_1.default.LOG_MAJOR, 'RealtimeChannel.onMessage()', 'Starting decode failure recovery process.');\n this._lastPayload.decodeFailureRecoveryInProgress = true;\n this._attach(true, reason, function () {\n _this._lastPayload.decodeFailureRecoveryInProgress = false;\n });\n }\n };\n RealtimeChannel.prototype.onAttached = function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'RealtimeChannel.onAttached', 'activating channel; name = ' + this.name);\n };\n RealtimeChannel.prototype.notifyState = function (state, reason, resumed, hasPresence, hasBacklog) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'RealtimeChannel.notifyState', 'name = ' + this.name + ', current state = ' + this.state + ', notifying state ' + state);\n this.clearStateTimer();\n // RTP5a1\n if (Utils.arrIn(['detached', 'suspended', 'failed'], state)) {\n this.properties.channelSerial = null;\n }\n if (state === this.state) {\n return;\n }\n this.presence.actOnChannelState(state, hasPresence, reason);\n if (state === 'suspended' && this.connectionManager.state.sendEvents) {\n this.startRetryTimer();\n }\n else {\n this.cancelRetryTimer();\n }\n if (reason) {\n this.errorReason = reason;\n }\n var change = new channelstatechange_1.default(this.state, state, resumed, hasBacklog, reason);\n var logLevel = state === 'failed' ? logger_1.default.LOG_ERROR : logger_1.default.LOG_MAJOR;\n logger_1.default.logAction(logLevel, 'Channel state for channel \"' + this.name + '\"', state + (reason ? '; reason: ' + reason : ''));\n if (state !== 'attaching' && state !== 'suspended') {\n this.retryCount = 0;\n }\n /* Note: we don't set inProgress for pending states until the request is actually in progress */\n if (state === 'attached') {\n this.onAttached();\n }\n if (state === 'attached') {\n this._attachResume = true;\n }\n else if (state === 'detaching' || state === 'failed') {\n this._attachResume = false;\n }\n this.state = state;\n this._allChannelChanges.emit(state, change);\n this.emit(state, change);\n };\n RealtimeChannel.prototype.requestState = function (state, reason) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'RealtimeChannel.requestState', 'name = ' + this.name + ', state = ' + state);\n this.notifyState(state, reason);\n /* send the event and await response */\n this.checkPendingState();\n };\n RealtimeChannel.prototype.checkPendingState = function () {\n /* if can't send events, do nothing */\n var cmState = this.connectionManager.state;\n /* Allow attach messages to queue up when synchronizing, since this will be\n * the state we'll be in when upgrade transport.active triggers a checkpendingstate */\n if (!(cmState.sendEvents || cmState.forceQueueEvents)) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'RealtimeChannel.checkPendingState', 'sendEvents is false; state is ' + this.connectionManager.state.state);\n return;\n }\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'RealtimeChannel.checkPendingState', 'name = ' + this.name + ', state = ' + this.state);\n /* Only start the state timer running when actually sending the event */\n switch (this.state) {\n case 'attaching':\n this.startStateTimerIfNotRunning();\n this.attachImpl();\n break;\n case 'detaching':\n this.startStateTimerIfNotRunning();\n this.detachImpl();\n break;\n case 'attached':\n /* resume any sync operation that was in progress */\n this.sync();\n break;\n default:\n break;\n }\n };\n RealtimeChannel.prototype.timeoutPendingState = function () {\n switch (this.state) {\n case 'attaching': {\n var err = new errorinfo_1.default('Channel attach timed out', 90007, 408);\n this.notifyState('suspended', err);\n break;\n }\n case 'detaching': {\n var err = new errorinfo_1.default('Channel detach timed out', 90007, 408);\n this.notifyState('attached', err);\n break;\n }\n default:\n this.checkPendingState();\n break;\n }\n };\n RealtimeChannel.prototype.startStateTimerIfNotRunning = function () {\n var _this = this;\n if (!this.stateTimer) {\n this.stateTimer = setTimeout(function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'RealtimeChannel.startStateTimerIfNotRunning', 'timer expired');\n _this.stateTimer = null;\n _this.timeoutPendingState();\n }, this.realtime.options.timeouts.realtimeRequestTimeout);\n }\n };\n RealtimeChannel.prototype.clearStateTimer = function () {\n var stateTimer = this.stateTimer;\n if (stateTimer) {\n clearTimeout(stateTimer);\n this.stateTimer = null;\n }\n };\n RealtimeChannel.prototype.startRetryTimer = function () {\n var _this = this;\n if (this.retryTimer)\n return;\n this.retryCount++;\n var retryDelay = Utils.getRetryTime(this.realtime.options.timeouts.channelRetryTimeout, this.retryCount);\n this.retryTimer = setTimeout(function () {\n /* If connection is not connected, just leave in suspended, a reattach\n * will be triggered once it connects again */\n if (_this.state === 'suspended' && _this.connectionManager.state.sendEvents) {\n _this.retryTimer = null;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'RealtimeChannel retry timer expired', 'attempting a new attach');\n _this.requestState('attaching');\n }\n }, retryDelay);\n };\n RealtimeChannel.prototype.cancelRetryTimer = function () {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n this.retryTimer = null;\n }\n };\n /* @returns null (if can safely be released) | ErrorInfo (if cannot) */\n RealtimeChannel.prototype.getReleaseErr = function () {\n var s = this.state;\n if (s === 'initialized' || s === 'detached' || s === 'failed') {\n return null;\n }\n return new errorinfo_1.default('Can only release a channel in a state where there is no possibility of further updates from the server being received (initialized, detached, or failed); was ' +\n s, 90001, 400);\n };\n RealtimeChannel.prototype.setChannelSerial = function (channelSerial) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'RealtimeChannel.setChannelSerial()', 'Updating channel serial; serial = ' + channelSerial + '; previous = ' + this.properties.channelSerial);\n // RTP17h: Only update the channel serial if its present (it won't always\n // be set).\n if (channelSerial) {\n this.properties.channelSerial = channelSerial;\n }\n };\n return RealtimeChannel;\n}(channel_1.default));\nfunction omitAgent(channelParams) {\n var _a = channelParams || {}, _ = _a.agent, paramsWithoutAgent = tslib_1.__rest(_a, [\"agent\"]);\n return paramsWithoutAgent;\n}\nexports.default = RealtimeChannel;\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ChannelStateChange = /** @class */ (function () {\n function ChannelStateChange(previous, current, resumed, hasBacklog, reason) {\n this.previous = previous;\n this.current = current;\n if (current === 'attached') {\n this.resumed = resumed;\n this.hasBacklog = hasBacklog;\n }\n if (reason)\n this.reason = reason;\n }\n return ChannelStateChange;\n}());\nexports.default = ChannelStateChange;\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n;(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(6));\n\t}\n\telse {}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction inspect(buffer) {\n if (buffer === undefined)\n return 'undefined';\n var view;\n var type;\n if (buffer instanceof ArrayBuffer) {\n type = 'ArrayBuffer';\n view = new DataView(buffer);\n }\n else if (buffer instanceof DataView) {\n type = 'DataView';\n view = buffer;\n }\n if (!view)\n return JSON.stringify(buffer);\n var bytes = [];\n for (var i = 0; i < buffer.byteLength; i++) {\n if (i > 20) {\n bytes.push('...');\n break;\n }\n var byte_ = view.getUint8(i).toString(16);\n if (byte_.length === 1)\n byte_ = '0' + byte_;\n bytes.push(byte_);\n }\n return '<' + type + ' ' + bytes.join(' ') + '>';\n}\n// Encode string as utf8 into dataview at offset\nfunction utf8Write(view, offset, string) {\n for (var i = 0, l = string.length; i < l; i++) {\n var codePoint = string.charCodeAt(i);\n // One byte of UTF-8\n if (codePoint < 0x80) {\n view.setUint8(offset++, ((codePoint >>> 0) & 0x7f) | 0x00);\n continue;\n }\n // Two bytes of UTF-8\n if (codePoint < 0x800) {\n view.setUint8(offset++, ((codePoint >>> 6) & 0x1f) | 0xc0);\n view.setUint8(offset++, ((codePoint >>> 0) & 0x3f) | 0x80);\n continue;\n }\n // Three bytes of UTF-8.\n if (codePoint < 0x10000) {\n view.setUint8(offset++, ((codePoint >>> 12) & 0x0f) | 0xe0);\n view.setUint8(offset++, ((codePoint >>> 6) & 0x3f) | 0x80);\n view.setUint8(offset++, ((codePoint >>> 0) & 0x3f) | 0x80);\n continue;\n }\n // Four bytes of UTF-8\n if (codePoint < 0x110000) {\n view.setUint8(offset++, ((codePoint >>> 18) & 0x07) | 0xf0);\n view.setUint8(offset++, ((codePoint >>> 12) & 0x3f) | 0x80);\n view.setUint8(offset++, ((codePoint >>> 6) & 0x3f) | 0x80);\n view.setUint8(offset++, ((codePoint >>> 0) & 0x3f) | 0x80);\n continue;\n }\n throw new Error('bad codepoint ' + codePoint);\n }\n}\nfunction utf8Read(view, offset, length) {\n var string = '';\n for (var i = offset, end = offset + length; i < end; i++) {\n var byte_ = view.getUint8(i);\n // One byte character\n if ((byte_ & 0x80) === 0x00) {\n string += String.fromCharCode(byte_);\n continue;\n }\n // Two byte character\n if ((byte_ & 0xe0) === 0xc0) {\n string += String.fromCharCode(((byte_ & 0x0f) << 6) | (view.getUint8(++i) & 0x3f));\n continue;\n }\n // Three byte character\n if ((byte_ & 0xf0) === 0xe0) {\n string += String.fromCharCode(((byte_ & 0x0f) << 12) | ((view.getUint8(++i) & 0x3f) << 6) | ((view.getUint8(++i) & 0x3f) << 0));\n continue;\n }\n // Four byte character\n if ((byte_ & 0xf8) === 0xf0) {\n string += String.fromCharCode(((byte_ & 0x07) << 18) |\n ((view.getUint8(++i) & 0x3f) << 12) |\n ((view.getUint8(++i) & 0x3f) << 6) |\n ((view.getUint8(++i) & 0x3f) << 0));\n continue;\n }\n throw new Error('Invalid byte ' + byte_.toString(16));\n }\n return string;\n}\nfunction utf8ByteCount(string) {\n var count = 0;\n for (var i = 0, l = string.length; i < l; i++) {\n var codePoint = string.charCodeAt(i);\n if (codePoint < 0x80) {\n count += 1;\n continue;\n }\n if (codePoint < 0x800) {\n count += 2;\n continue;\n }\n if (codePoint < 0x10000) {\n count += 3;\n continue;\n }\n if (codePoint < 0x110000) {\n count += 4;\n continue;\n }\n throw new Error('bad codepoint ' + codePoint);\n }\n return count;\n}\nfunction encode(value, sparse) {\n var size = sizeof(value, sparse);\n if (size === 0)\n return undefined;\n var buffer = new ArrayBuffer(size);\n var view = new DataView(buffer);\n _encode(value, view, 0, sparse);\n return buffer;\n}\nvar SH_L_32 = (1 << 16) * (1 << 16), SH_R_32 = 1 / SH_L_32;\nfunction getInt64(view, offset) {\n offset = offset || 0;\n return view.getInt32(offset) * SH_L_32 + view.getUint32(offset + 4);\n}\nfunction getUint64(view, offset) {\n offset = offset || 0;\n return view.getUint32(offset) * SH_L_32 + view.getUint32(offset + 4);\n}\nfunction setInt64(view, offset, val) {\n if (val < 0x8000000000000000) {\n view.setInt32(offset, Math.floor(val * SH_R_32));\n view.setInt32(offset + 4, val & -1);\n }\n else {\n view.setUint32(offset, 0x7fffffff);\n view.setUint32(offset + 4, 0x7fffffff);\n }\n}\nfunction setUint64(view, offset, val) {\n if (val < 0x10000000000000000) {\n view.setUint32(offset, Math.floor(val * SH_R_32));\n view.setInt32(offset + 4, val & -1);\n }\n else {\n view.setUint32(offset, 0xffffffff);\n view.setUint32(offset + 4, 0xffffffff);\n }\n}\n// https://gist.github.com/frsyuki/5432559 - v5 spec\n//\n// I've used one extension point from `fixext 1` to store `undefined`. On the wire this\n// should translate to exactly 0xd40000\n//\n// +--------+--------+--------+\n// | 0xd4 | 0x00 | 0x00 |\n// +--------+--------+--------+\n// ^ fixext | ^ value part unused (fixed to be 0)\n// ^ indicates undefined value\n//\nvar Decoder = /** @class */ (function () {\n function Decoder(view, offset) {\n var _this = this;\n this.map = function (length) {\n var value = {};\n for (var i = 0; i < length; i++) {\n var key = _this.parse();\n value[key] = _this.parse();\n }\n return value;\n };\n this.bin = function (length) {\n var value = new ArrayBuffer(length);\n new Uint8Array(value).set(new Uint8Array(_this.view.buffer, _this.offset, length), 0);\n _this.offset += length;\n return value;\n };\n this.buf = this.bin;\n this.str = function (length) {\n var value = utf8Read(_this.view, _this.offset, length);\n _this.offset += length;\n return value;\n };\n this.array = function (length) {\n var value = new Array(length);\n for (var i = 0; i < length; i++) {\n value[i] = _this.parse();\n }\n return value;\n };\n this.ext = function (length) {\n _this.offset += length;\n return {\n type: _this.view.getInt8(_this.offset),\n data: _this.buf(length),\n };\n };\n this.parse = function () {\n var type = _this.view.getUint8(_this.offset);\n var value, length;\n // Positive FixInt - 0xxxxxxx\n if ((type & 0x80) === 0x00) {\n _this.offset++;\n return type;\n }\n // FixMap - 1000xxxx\n if ((type & 0xf0) === 0x80) {\n length = type & 0x0f;\n _this.offset++;\n return _this.map(length);\n }\n // FixArray - 1001xxxx\n if ((type & 0xf0) === 0x90) {\n length = type & 0x0f;\n _this.offset++;\n return _this.array(length);\n }\n // FixStr - 101xxxxx\n if ((type & 0xe0) === 0xa0) {\n length = type & 0x1f;\n _this.offset++;\n return _this.str(length);\n }\n // Negative FixInt - 111xxxxx\n if ((type & 0xe0) === 0xe0) {\n value = _this.view.getInt8(_this.offset);\n _this.offset++;\n return value;\n }\n switch (type) {\n // nil\n case 0xc0:\n _this.offset++;\n return null;\n // 0xc1 never used - use for undefined (NON-STANDARD)\n case 0xc1:\n _this.offset++;\n return undefined;\n // false\n case 0xc2:\n _this.offset++;\n return false;\n // true\n case 0xc3:\n _this.offset++;\n return true;\n // bin 8\n case 0xc4:\n length = _this.view.getUint8(_this.offset + 1);\n _this.offset += 2;\n return _this.bin(length);\n // bin 16\n case 0xc5:\n length = _this.view.getUint16(_this.offset + 1);\n _this.offset += 3;\n return _this.bin(length);\n // bin 32\n case 0xc6:\n length = _this.view.getUint32(_this.offset + 1);\n _this.offset += 5;\n return _this.bin(length);\n // ext 8\n case 0xc7:\n length = _this.view.getUint8(_this.offset + 1);\n _this.offset += 2;\n return _this.ext(length);\n // ext 16\n case 0xc8:\n length = _this.view.getUint16(_this.offset + 1);\n _this.offset += 3;\n return _this.ext(length);\n // ext 32\n case 0xc9:\n length = _this.view.getUint32(_this.offset + 1);\n _this.offset += 5;\n return _this.ext(length);\n // float 32\n case 0xca:\n value = _this.view.getFloat32(_this.offset + 1);\n _this.offset += 5;\n return value;\n // float 64\n case 0xcb:\n value = _this.view.getFloat64(_this.offset + 1);\n _this.offset += 9;\n return value;\n // uint8\n case 0xcc:\n value = _this.view.getUint8(_this.offset + 1);\n _this.offset += 2;\n return value;\n // uint 16\n case 0xcd:\n value = _this.view.getUint16(_this.offset + 1);\n _this.offset += 3;\n return value;\n // uint 32\n case 0xce:\n value = _this.view.getUint32(_this.offset + 1);\n _this.offset += 5;\n return value;\n // uint 64\n case 0xcf:\n value = getUint64(_this.view, _this.offset + 1);\n _this.offset += 9;\n return value;\n // int 8\n case 0xd0:\n value = _this.view.getInt8(_this.offset + 1);\n _this.offset += 2;\n return value;\n // int 16\n case 0xd1:\n value = _this.view.getInt16(_this.offset + 1);\n _this.offset += 3;\n return value;\n // int 32\n case 0xd2:\n value = _this.view.getInt32(_this.offset + 1);\n _this.offset += 5;\n return value;\n // int 64\n case 0xd3:\n value = getInt64(_this.view, _this.offset + 1);\n _this.offset += 9;\n return value;\n // fixext 1\n case 0xd4:\n length = 1;\n _this.offset++;\n return _this.ext(length);\n // fixext 2\n case 0xd5:\n length = 2;\n _this.offset++;\n return _this.ext(length);\n // fixext 4\n case 0xd6:\n length = 4;\n _this.offset++;\n return _this.ext(length);\n // fixext 8\n case 0xd7:\n length = 8;\n _this.offset++;\n return _this.ext(length);\n // fixext 16\n case 0xd8:\n length = 16;\n _this.offset++;\n return _this.ext(length);\n // str8\n case 0xd9:\n length = _this.view.getUint8(_this.offset + 1);\n _this.offset += 2;\n return _this.str(length);\n // str 16\n case 0xda:\n length = _this.view.getUint16(_this.offset + 1);\n _this.offset += 3;\n return _this.str(length);\n // str 32\n case 0xdb:\n length = _this.view.getUint32(_this.offset + 1);\n _this.offset += 5;\n return _this.str(length);\n // array 16\n case 0xdc:\n length = _this.view.getUint16(_this.offset + 1);\n _this.offset += 3;\n return _this.array(length);\n // array 32\n case 0xdd:\n length = _this.view.getUint32(_this.offset + 1);\n _this.offset += 5;\n return _this.array(length);\n // map 16\n case 0xde:\n length = _this.view.getUint16(_this.offset + 1);\n _this.offset += 3;\n return _this.map(length);\n // map 32\n case 0xdf:\n length = _this.view.getUint32(_this.offset + 1);\n _this.offset += 5;\n return _this.map(length);\n }\n throw new Error('Unknown type 0x' + type.toString(16));\n };\n this.offset = offset || 0;\n this.view = view;\n }\n return Decoder;\n}());\nfunction decode(buffer) {\n var view = new DataView(buffer);\n var decoder = new Decoder(view);\n var value = decoder.parse();\n if (decoder.offset !== buffer.byteLength)\n throw new Error(buffer.byteLength - decoder.offset + ' trailing bytes');\n return value;\n}\nfunction encodeableKeys(value, sparse) {\n return Object.keys(value).filter(function (e) {\n var val = value[e], type = typeof val;\n return (!sparse || (val !== undefined && val !== null)) && ('function' !== type || !!val.toJSON);\n });\n}\nfunction _encode(value, view, offset, sparse) {\n var type = typeof value;\n // Strings Bytes\n // There are four string types: fixstr/str8/str16/str32\n if (typeof value === 'string') {\n var length_1 = utf8ByteCount(value);\n // fixstr\n if (length_1 < 0x20) {\n view.setUint8(offset, length_1 | 0xa0);\n utf8Write(view, offset + 1, value);\n return 1 + length_1;\n }\n // str8\n if (length_1 < 0x100) {\n view.setUint8(offset, 0xd9);\n view.setUint8(offset + 1, length_1);\n utf8Write(view, offset + 2, value);\n return 2 + length_1;\n }\n // str16\n if (length_1 < 0x10000) {\n view.setUint8(offset, 0xda);\n view.setUint16(offset + 1, length_1);\n utf8Write(view, offset + 3, value);\n return 3 + length_1;\n }\n // str32\n if (length_1 < 0x100000000) {\n view.setUint8(offset, 0xdb);\n view.setUint32(offset + 1, length_1);\n utf8Write(view, offset + 5, value);\n return 5 + length_1;\n }\n }\n if (ArrayBuffer.isView && ArrayBuffer.isView(value)) {\n // extract the arraybuffer and fallthrough\n value = value.buffer;\n }\n // There are three bin types: bin8/bin16/bin32\n if (value instanceof ArrayBuffer) {\n var length_2 = value.byteLength;\n // bin8\n if (length_2 < 0x100) {\n view.setUint8(offset, 0xc4);\n view.setUint8(offset + 1, length_2);\n new Uint8Array(view.buffer).set(new Uint8Array(value), offset + 2);\n return 2 + length_2;\n }\n // bin16\n if (length_2 < 0x10000) {\n view.setUint8(offset, 0xc5);\n view.setUint16(offset + 1, length_2);\n new Uint8Array(view.buffer).set(new Uint8Array(value), offset + 3);\n return 3 + length_2;\n }\n // bin 32\n if (length_2 < 0x100000000) {\n view.setUint8(offset, 0xc6);\n view.setUint32(offset + 1, length_2);\n new Uint8Array(view.buffer).set(new Uint8Array(value), offset + 5);\n return 5 + length_2;\n }\n }\n if (typeof value === 'number') {\n // Floating Point\n // NOTE: We're always using float64\n if (Math.floor(value) !== value) {\n view.setUint8(offset, 0xcb);\n view.setFloat64(offset + 1, value);\n return 9;\n }\n // Integers\n if (value >= 0) {\n // positive fixnum\n if (value < 0x80) {\n view.setUint8(offset, value);\n return 1;\n }\n // uint 8\n if (value < 0x100) {\n view.setUint8(offset, 0xcc);\n view.setUint8(offset + 1, value);\n return 2;\n }\n // uint 16\n if (value < 0x10000) {\n view.setUint8(offset, 0xcd);\n view.setUint16(offset + 1, value);\n return 3;\n }\n // uint 32\n if (value < 0x100000000) {\n view.setUint8(offset, 0xce);\n view.setUint32(offset + 1, value);\n return 5;\n }\n // uint 64\n if (value < 0x10000000000000000) {\n view.setUint8(offset, 0xcf);\n setUint64(view, offset + 1, value);\n return 9;\n }\n throw new Error('Number too big 0x' + value.toString(16));\n }\n // negative fixnum\n if (value >= -0x20) {\n view.setInt8(offset, value);\n return 1;\n }\n // int 8\n if (value >= -0x80) {\n view.setUint8(offset, 0xd0);\n view.setInt8(offset + 1, value);\n return 2;\n }\n // int 16\n if (value >= -0x8000) {\n view.setUint8(offset, 0xd1);\n view.setInt16(offset + 1, value);\n return 3;\n }\n // int 32\n if (value >= -0x80000000) {\n view.setUint8(offset, 0xd2);\n view.setInt32(offset + 1, value);\n return 5;\n }\n // int 64\n if (value >= -0x8000000000000000) {\n view.setUint8(offset, 0xd3);\n setInt64(view, offset + 1, value);\n return 9;\n }\n throw new Error('Number too small -0x' + (-value).toString(16).substr(1));\n }\n // undefined - use d4 (NON-STANDARD)\n if (type === 'undefined') {\n if (sparse)\n return 0;\n view.setUint8(offset, 0xd4);\n view.setUint8(offset + 1, 0x00);\n view.setUint8(offset + 2, 0x00);\n return 3;\n }\n // null\n if (value === null) {\n if (sparse)\n return 0;\n view.setUint8(offset, 0xc0);\n return 1;\n }\n // Boolean\n if (type === 'boolean') {\n view.setUint8(offset, value ? 0xc3 : 0xc2);\n return 1;\n }\n if ('function' === typeof value.toJSON)\n return _encode(value.toJSON(), view, offset, sparse);\n // Container Types\n if (type === 'object') {\n var length_3, size = 0;\n var keys = void 0;\n var isArray = Array.isArray(value);\n if (isArray) {\n length_3 = value.length;\n }\n else {\n keys = encodeableKeys(value, sparse);\n length_3 = keys.length;\n }\n if (length_3 < 0x10) {\n view.setUint8(offset, length_3 | (isArray ? 0x90 : 0x80));\n size = 1;\n }\n else if (length_3 < 0x10000) {\n view.setUint8(offset, isArray ? 0xdc : 0xde);\n view.setUint16(offset + 1, length_3);\n size = 3;\n }\n else if (length_3 < 0x100000000) {\n view.setUint8(offset, isArray ? 0xdd : 0xdf);\n view.setUint32(offset + 1, length_3);\n size = 5;\n }\n if (isArray) {\n for (var i = 0; i < length_3; i++) {\n size += _encode(value[i], view, offset + size, sparse);\n }\n }\n else if (keys) {\n for (var i = 0; i < length_3; i++) {\n var key = keys[i];\n size += _encode(key, view, offset + size);\n size += _encode(value[key], view, offset + size, sparse);\n }\n }\n return size;\n }\n if (type === 'function')\n return 0;\n throw new Error('Unknown type ' + type);\n}\nfunction sizeof(value, sparse) {\n var type = typeof value;\n // fixstr or str8 or str16 or str32\n if (type === 'string') {\n var length_4 = utf8ByteCount(value);\n if (length_4 < 0x20) {\n return 1 + length_4;\n }\n if (length_4 < 0x100) {\n return 2 + length_4;\n }\n if (length_4 < 0x10000) {\n return 3 + length_4;\n }\n if (length_4 < 0x100000000) {\n return 5 + length_4;\n }\n }\n if (ArrayBuffer.isView && ArrayBuffer.isView(value)) {\n // extract the arraybuffer and fallthrough\n value = value.buffer;\n }\n // bin8 or bin16 or bin32\n if (value instanceof ArrayBuffer) {\n var length_5 = value.byteLength;\n if (length_5 < 0x100) {\n return 2 + length_5;\n }\n if (length_5 < 0x10000) {\n return 3 + length_5;\n }\n if (length_5 < 0x100000000) {\n return 5 + length_5;\n }\n }\n if (typeof value === 'number') {\n // Floating Point (32 bits)\n // double\n if (Math.floor(value) !== value)\n return 9;\n // Integers\n if (value >= 0) {\n // positive fixint\n if (value < 0x80)\n return 1;\n // uint 8\n if (value < 0x100)\n return 2;\n // uint 16\n if (value < 0x10000)\n return 3;\n // uint 32\n if (value < 0x100000000)\n return 5;\n // uint 64\n if (value < 0x10000000000000000)\n return 9;\n // Too big\n throw new Error('Number too big 0x' + value.toString(16));\n }\n // negative fixint\n if (value >= -0x20)\n return 1;\n // int 8\n if (value >= -0x80)\n return 2;\n // int 16\n if (value >= -0x8000)\n return 3;\n // int 32\n if (value >= -0x80000000)\n return 5;\n // int 64\n if (value >= -0x8000000000000000)\n return 9;\n // Too small\n throw new Error('Number too small -0x' + value.toString(16).substr(1));\n }\n // Boolean\n if (type === 'boolean')\n return 1;\n // undefined, null\n if (value === null)\n return sparse ? 0 : 1;\n if (value === undefined)\n return sparse ? 0 : 3;\n if ('function' === typeof value.toJSON)\n return sizeof(value.toJSON(), sparse);\n // Container Types\n if (type === 'object') {\n var length_6, size = 0;\n if (Array.isArray(value)) {\n length_6 = value.length;\n for (var i = 0; i < length_6; i++) {\n size += sizeof(value[i], sparse);\n }\n }\n else {\n var keys = encodeableKeys(value, sparse);\n length_6 = keys.length;\n for (var i = 0; i < length_6; i++) {\n var key = keys[i];\n size += sizeof(key) + sizeof(value[key], sparse);\n }\n }\n if (length_6 < 0x10) {\n return 1 + size;\n }\n if (length_6 < 0x10000) {\n return 3 + size;\n }\n if (length_6 < 0x100000000) {\n return 5 + size;\n }\n throw new Error('Array or object too long 0x' + length_6.toString(16));\n }\n if (type === 'function')\n return 0;\n throw new Error('Unknown type ' + type);\n}\nexports.default = {\n encode: encode,\n decode: decode,\n inspect: inspect,\n utf8Write: utf8Write,\n utf8Read: utf8Read,\n utf8ByteCount: utf8ByteCount,\n};\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\n// Common\nvar rest_1 = tslib_1.__importDefault(__webpack_require__(30));\nvar realtime_1 = tslib_1.__importDefault(__webpack_require__(50));\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nvar errorinfo_1 = tslib_1.__importDefault(__webpack_require__(4));\n// Platform Specific\nvar bufferutils_1 = tslib_1.__importDefault(__webpack_require__(55));\n// @ts-ignore\nvar crypto_1 = tslib_1.__importDefault(__webpack_require__(57));\nvar http_1 = tslib_1.__importDefault(__webpack_require__(62));\nvar config_1 = tslib_1.__importDefault(__webpack_require__(64));\n// @ts-ignore\nvar transport_1 = tslib_1.__importDefault(__webpack_require__(68));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar defaults_1 = __webpack_require__(8);\nvar webstorage_1 = tslib_1.__importDefault(__webpack_require__(65));\nvar defaults_2 = tslib_1.__importDefault(__webpack_require__(66));\nvar msgpack_1 = tslib_1.__importDefault(__webpack_require__(41));\nvar Crypto = (0, crypto_1.default)(config_1.default, bufferutils_1.default);\nplatform_1.default.Crypto = Crypto;\nplatform_1.default.BufferUtils = bufferutils_1.default;\nplatform_1.default.Http = http_1.default;\nplatform_1.default.Config = config_1.default;\nplatform_1.default.Transports = transport_1.default;\nplatform_1.default.WebStorage = webstorage_1.default;\nrest_1.default.Crypto = Crypto;\nrealtime_1.default.Crypto = Crypto;\nlogger_1.default.initLogHandlers();\nplatform_1.default.Defaults = (0, defaults_1.getDefaults)(defaults_2.default);\nif (platform_1.default.Config.agent) {\n // @ts-ignore\n platform_1.default.Defaults.agent += ' ' + platform_1.default.Config.agent;\n}\n/* If using IE8, don't attempt to upgrade from xhr_polling to xhr_streaming -\n * while it can do streaming, the low max http-connections-per-host limit means\n * that the polling transport is crippled during the upgrade process. So just\n * leave it at the base transport */\nif (platform_1.default.Config.noUpgrade) {\n platform_1.default.Defaults.upgradeTransports = [];\n}\nexports.default = {\n ErrorInfo: errorinfo_1.default,\n Rest: rest_1.default,\n Realtime: realtime_1.default,\n msgpack: msgpack_1.default,\n};\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module) {\n\nmodule.exports = JSON.parse(\"{\\\"name\\\":\\\"ably\\\",\\\"description\\\":\\\"Realtime client library for Ably, the realtime messaging service\\\",\\\"version\\\":\\\"1.2.50\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"bugs\\\":{\\\"url\\\":\\\"https://github.com/ably/ably-js/issues\\\",\\\"email\\\":\\\"support@ably.com\\\"},\\\"main\\\":\\\"./build/ably-node.js\\\",\\\"typings\\\":\\\"./ably.d.ts\\\",\\\"react-native\\\":{\\\"./build/ably-node.js\\\":\\\"./build/ably-reactnative.js\\\"},\\\"browser\\\":{\\\"./build/ably-node.js\\\":\\\"./build/ably-commonjs.js\\\"},\\\"files\\\":[\\\"build/**\\\",\\\"ably.d.ts\\\",\\\"callbacks.d.ts\\\",\\\"callbacks.js\\\",\\\"promises.d.ts\\\",\\\"promises.js\\\",\\\"resources/**\\\",\\\"src/**\\\",\\\"react/**\\\"],\\\"dependencies\\\":{\\\"@ably/msgpack-js\\\":\\\"^0.4.0\\\",\\\"got\\\":\\\"^11.8.5\\\",\\\"ws\\\":\\\"^8.14.2\\\"},\\\"peerDependencies\\\":{\\\"react\\\":\\\">=16.8.0\\\",\\\"react-dom\\\":\\\">=16.8.0\\\"},\\\"peerDependenciesMeta\\\":{\\\"react\\\":{\\\"optional\\\":true},\\\"react-dom\\\":{\\\"optional\\\":true}},\\\"devDependencies\\\":{\\\"@ably/vcdiff-decoder\\\":\\\"1.0.4\\\",\\\"@arethetypeswrong/cli\\\":\\\"^0.13.1\\\",\\\"@babel/preset-env\\\":\\\"^7.23.6\\\",\\\"@testing-library/react\\\":\\\"^13.3.0\\\",\\\"@types/crypto-js\\\":\\\"^4.0.1\\\",\\\"@types/jmespath\\\":\\\"^0.15.2\\\",\\\"@types/node\\\":\\\"^15.0.0\\\",\\\"@types/request\\\":\\\"^2.48.7\\\",\\\"@types/ws\\\":\\\"^8.2.0\\\",\\\"@typescript-eslint/eslint-plugin\\\":\\\"^5.14.0\\\",\\\"@typescript-eslint/parser\\\":\\\"^5.14.0\\\",\\\"@vitejs/plugin-react\\\":\\\"^1.3.2\\\",\\\"async\\\":\\\"ably-forks/async#requirejs\\\",\\\"aws-sdk\\\":\\\"^2.1413.0\\\",\\\"babel-loader\\\":\\\"^8.3.0\\\",\\\"chai\\\":\\\"^4.2.0\\\",\\\"copy-webpack-plugin\\\":\\\"^6.4.1\\\",\\\"cors\\\":\\\"^2.8.5\\\",\\\"crypto-js\\\":\\\"ably-forks/crypto-js#crypto-lite\\\",\\\"eslint\\\":\\\"^7.13.0\\\",\\\"eslint-plugin-import\\\":\\\"^2.28.0\\\",\\\"eslint-plugin-jsdoc\\\":\\\"^40.0.0\\\",\\\"eslint-plugin-react\\\":\\\"^7.32.2\\\",\\\"eslint-plugin-react-hooks\\\":\\\"^4.6.0\\\",\\\"eslint-plugin-security\\\":\\\"^1.4.0\\\",\\\"express\\\":\\\"^4.17.1\\\",\\\"glob\\\":\\\"~4.4\\\",\\\"google-closure-compiler\\\":\\\"^20180610.0.1\\\",\\\"grunt\\\":\\\"^1.6.1\\\",\\\"grunt-bump\\\":\\\"^0.3.1\\\",\\\"grunt-cli\\\":\\\"~1.2.0\\\",\\\"grunt-closure-tools\\\":\\\"^1.0.0\\\",\\\"grunt-contrib-concat\\\":\\\"~0.5\\\",\\\"grunt-shell\\\":\\\"~1.1\\\",\\\"grunt-webpack\\\":\\\"^4.0.2\\\",\\\"hexy\\\":\\\"~0.2\\\",\\\"jmespath\\\":\\\"^0.16.0\\\",\\\"jsdom\\\":\\\"^20.0.0\\\",\\\"kexec\\\":\\\"ably-forks/node-kexec#update-for-node-12\\\",\\\"minimist\\\":\\\"^1.2.5\\\",\\\"mocha\\\":\\\"^8.1.3\\\",\\\"mocha-junit-reporter\\\":\\\"^2.2.1\\\",\\\"null-loader\\\":\\\"^4.0.1\\\",\\\"playwright\\\":\\\"^1.39.0\\\",\\\"prettier\\\":\\\"^2.5.1\\\",\\\"react\\\":\\\">=18.1.0\\\",\\\"react-dom\\\":\\\">=18.1.0\\\",\\\"requirejs\\\":\\\"~2.1\\\",\\\"shelljs\\\":\\\"~0.8\\\",\\\"source-map-explorer\\\":\\\"^2.5.2\\\",\\\"ts-loader\\\":\\\"^8.2.0\\\",\\\"tsconfig-paths-webpack-plugin\\\":\\\"^4.0.1\\\",\\\"tslib\\\":\\\"^2.3.1\\\",\\\"typedoc\\\":\\\"^0.23.8\\\",\\\"typescript\\\":\\\"^4.6.4\\\",\\\"vite\\\":\\\"^4.4.9\\\",\\\"vitest\\\":\\\"^0.18.0\\\",\\\"webpack\\\":\\\"^4.44.2\\\",\\\"webpack-cli\\\":\\\"^4.2.0\\\",\\\"webpack-node-externals\\\":\\\"^3.0.0\\\"},\\\"engines\\\":{\\\"node\\\":\\\">=5.10.x\\\"},\\\"repository\\\":\\\"ably/ably-js\\\",\\\"jspm\\\":{\\\"registry\\\":\\\"npm\\\",\\\"directories\\\":{\\\"lib\\\":\\\"build\\\"},\\\"main\\\":\\\"ably\\\"},\\\"scripts\\\":{\\\"start:react\\\":\\\"npx vite serve\\\",\\\"grunt\\\":\\\"grunt\\\",\\\"test\\\":\\\"grunt test\\\",\\\"test:node\\\":\\\"grunt test:node\\\",\\\"test:node:skip-build\\\":\\\"grunt mocha\\\",\\\"test:webserver\\\":\\\"grunt test:webserver\\\",\\\"test:playwright\\\":\\\"node test/support/runPlaywrightTests.js\\\",\\\"test:react\\\":\\\"vitest run\\\",\\\"concat\\\":\\\"grunt concat\\\",\\\"build\\\":\\\"grunt build:all && npm run build:react\\\",\\\"build:node\\\":\\\"grunt build:node\\\",\\\"build:browser\\\":\\\"grunt build:browser\\\",\\\"build:react\\\":\\\"npm run build:react:mjs && npm run build:react:cjs && cp src/platform/react-hooks/res/package.react.json react/package.json\\\",\\\"build:react:mjs\\\":\\\"tsc --project src/platform/react-hooks/tsconfig.mjs.json && cp src/platform/react-hooks/res/package.mjs.json react/mjs/package.json\\\",\\\"build:react:cjs\\\":\\\"tsc --project src/platform/react-hooks/tsconfig.cjs.json && cp src/platform/react-hooks/res/package.cjs.json react/cjs/package.json\\\",\\\"requirejs\\\":\\\"grunt requirejs\\\",\\\"lint\\\":\\\"eslint .\\\",\\\"lint:fix\\\":\\\"eslint --fix .\\\",\\\"check-closure-compiler\\\":\\\"grunt check-closure-compiler\\\",\\\"prepare\\\":\\\"npm run build\\\",\\\"format\\\":\\\"prettier --write --ignore-path .gitignore --ignore-path .prettierignore src test ably.d.ts webpack.config.js Gruntfile.js scripts/cdn_deploy.js docs/chrome-mv3.md\\\",\\\"format:check\\\":\\\"prettier --check --ignore-path .gitignore --ignore-path .prettierignore src test ably.d.ts webpack.config.js Gruntfile.js scripts/cdn_deploy.js\\\",\\\"sourcemap\\\":\\\"source-map-explorer build/ably.min.js\\\",\\\"sourcemap:noencryption\\\":\\\"source-map-explorer build/ably.noencryption.min.js\\\",\\\"docs\\\":\\\"typedoc --entryPoints ably.d.ts --out docs/generated/default --readme docs/landing-pages/default.md && typedoc --entryPoints promises.d.ts --out docs/generated/promises --name \\\\\\\"ably (Promise-based)\\\\\\\" --readme docs/landing-pages/promises.md && cp docs/landing-pages/choose-library.html docs/generated/index.html\\\"}}\");\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n;(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(6), __webpack_require__(32), __webpack_require__(25));\n\t}\n\telse {}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS.HmacSHA256;\n\n}));\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar devicedetails_1 = tslib_1.__importDefault(__webpack_require__(47));\nvar resource_1 = tslib_1.__importDefault(__webpack_require__(15));\nvar paginatedresource_1 = tslib_1.__importDefault(__webpack_require__(20));\nvar errorinfo_1 = tslib_1.__importDefault(__webpack_require__(4));\nvar pushchannelsubscription_1 = tslib_1.__importDefault(__webpack_require__(48));\nvar noop = function () { };\nvar Push = /** @class */ (function () {\n function Push(rest) {\n this.rest = rest;\n this.admin = new Admin(rest);\n }\n return Push;\n}());\nvar Admin = /** @class */ (function () {\n function Admin(rest) {\n this.rest = rest;\n this.deviceRegistrations = new DeviceRegistrations(rest);\n this.channelSubscriptions = new ChannelSubscriptions(rest);\n }\n Admin.prototype.publish = function (recipient, payload, callback) {\n var rest = this.rest;\n var format = rest.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, headers = Utils.defaultPostHeaders(rest.options, format), params = {};\n var body = Utils.mixin({ recipient: recipient }, payload);\n if (typeof callback !== 'function') {\n if (this.rest.options.promises) {\n return Utils.promisify(this, 'publish', arguments);\n }\n callback = noop;\n }\n if (rest.options.headers)\n Utils.mixin(headers, rest.options.headers);\n if (rest.options.pushFullWait)\n Utils.mixin(params, { fullWait: 'true' });\n var requestBody = Utils.encodeBody(body, format);\n resource_1.default.post(rest, '/push/publish', requestBody, headers, params, null, function (err) { return callback(err); });\n };\n return Admin;\n}());\nvar DeviceRegistrations = /** @class */ (function () {\n function DeviceRegistrations(rest) {\n this.rest = rest;\n }\n DeviceRegistrations.prototype.save = function (device, callback) {\n var rest = this.rest;\n var body = devicedetails_1.default.fromValues(device);\n var format = rest.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, headers = Utils.defaultPostHeaders(rest.options, format), params = {};\n if (typeof callback !== 'function') {\n if (this.rest.options.promises) {\n return Utils.promisify(this, 'save', arguments);\n }\n callback = noop;\n }\n if (rest.options.headers)\n Utils.mixin(headers, rest.options.headers);\n if (rest.options.pushFullWait)\n Utils.mixin(params, { fullWait: 'true' });\n var requestBody = Utils.encodeBody(body, format);\n resource_1.default.put(rest, '/push/deviceRegistrations/' + encodeURIComponent(device.id), requestBody, headers, params, null, function (err, body, headers, unpacked) {\n callback(err, !err\n ? devicedetails_1.default.fromResponseBody(body, unpacked ? undefined : format)\n : undefined);\n });\n };\n DeviceRegistrations.prototype.get = function (deviceIdOrDetails, callback) {\n var rest = this.rest, format = rest.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, headers = Utils.defaultGetHeaders(rest.options, format), deviceId = deviceIdOrDetails.id || deviceIdOrDetails;\n if (typeof callback !== 'function') {\n if (this.rest.options.promises) {\n return Utils.promisify(this, 'get', arguments);\n }\n callback = noop;\n }\n if (typeof deviceId !== 'string' || !deviceId.length) {\n callback(new errorinfo_1.default('First argument to DeviceRegistrations#get must be a deviceId string or DeviceDetails', 40000, 400));\n return;\n }\n if (rest.options.headers)\n Utils.mixin(headers, rest.options.headers);\n resource_1.default.get(rest, '/push/deviceRegistrations/' + encodeURIComponent(deviceId), headers, {}, null, function (err, body, headers, unpacked) {\n callback(err, !err\n ? devicedetails_1.default.fromResponseBody(body, unpacked ? undefined : format)\n : undefined);\n });\n };\n DeviceRegistrations.prototype.list = function (params, callback) {\n var rest = this.rest, format = rest.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, envelope = this.rest.http.supportsLinkHeaders ? undefined : format, headers = Utils.defaultGetHeaders(rest.options, format);\n if (typeof callback !== 'function') {\n if (this.rest.options.promises) {\n return Utils.promisify(this, 'list', arguments);\n }\n callback = noop;\n }\n if (rest.options.headers)\n Utils.mixin(headers, rest.options.headers);\n new paginatedresource_1.default(rest, '/push/deviceRegistrations', headers, envelope, function (body, headers, unpacked) {\n return devicedetails_1.default.fromResponseBody(body, unpacked ? undefined : format);\n }).get(params, callback);\n };\n DeviceRegistrations.prototype.remove = function (deviceIdOrDetails, callback) {\n var rest = this.rest, format = rest.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, headers = Utils.defaultGetHeaders(rest.options, format), params = {}, deviceId = deviceIdOrDetails.id || deviceIdOrDetails;\n if (typeof callback !== 'function') {\n if (this.rest.options.promises) {\n return Utils.promisify(this, 'remove', arguments);\n }\n callback = noop;\n }\n if (typeof deviceId !== 'string' || !deviceId.length) {\n callback(new errorinfo_1.default('First argument to DeviceRegistrations#remove must be a deviceId string or DeviceDetails', 40000, 400));\n return;\n }\n if (rest.options.headers)\n Utils.mixin(headers, rest.options.headers);\n if (rest.options.pushFullWait)\n Utils.mixin(params, { fullWait: 'true' });\n resource_1.default['delete'](rest, '/push/deviceRegistrations/' + encodeURIComponent(deviceId), headers, params, null, function (err) { return callback(err); });\n };\n DeviceRegistrations.prototype.removeWhere = function (params, callback) {\n var rest = this.rest, format = rest.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, headers = Utils.defaultGetHeaders(rest.options, format);\n if (typeof callback !== 'function') {\n if (this.rest.options.promises) {\n return Utils.promisify(this, 'removeWhere', arguments);\n }\n callback = noop;\n }\n if (rest.options.headers)\n Utils.mixin(headers, rest.options.headers);\n if (rest.options.pushFullWait)\n Utils.mixin(params, { fullWait: 'true' });\n resource_1.default['delete'](rest, '/push/deviceRegistrations', headers, params, null, function (err) { return callback(err); });\n };\n return DeviceRegistrations;\n}());\nvar ChannelSubscriptions = /** @class */ (function () {\n function ChannelSubscriptions(rest) {\n /* ChannelSubscriptions have no unique id; removing one is equivalent to removeWhere by its properties */\n this.remove = ChannelSubscriptions.prototype.removeWhere;\n this.rest = rest;\n }\n ChannelSubscriptions.prototype.save = function (subscription, callback) {\n var rest = this.rest;\n var body = pushchannelsubscription_1.default.fromValues(subscription);\n var format = rest.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, headers = Utils.defaultPostHeaders(rest.options, format), params = {};\n if (typeof callback !== 'function') {\n if (this.rest.options.promises) {\n return Utils.promisify(this, 'save', arguments);\n }\n callback = noop;\n }\n if (rest.options.headers)\n Utils.mixin(headers, rest.options.headers);\n if (rest.options.pushFullWait)\n Utils.mixin(params, { fullWait: 'true' });\n var requestBody = Utils.encodeBody(body, format);\n resource_1.default.post(rest, '/push/channelSubscriptions', requestBody, headers, params, null, function (err, body, headers, unpacked) {\n callback(err, !err && pushchannelsubscription_1.default.fromResponseBody(body, unpacked ? undefined : format));\n });\n };\n ChannelSubscriptions.prototype.list = function (params, callback) {\n var rest = this.rest, format = rest.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, envelope = this.rest.http.supportsLinkHeaders ? undefined : format, headers = Utils.defaultGetHeaders(rest.options, format);\n if (typeof callback !== 'function') {\n if (this.rest.options.promises) {\n return Utils.promisify(this, 'list', arguments);\n }\n callback = noop;\n }\n if (rest.options.headers)\n Utils.mixin(headers, rest.options.headers);\n new paginatedresource_1.default(rest, '/push/channelSubscriptions', headers, envelope, function (body, headers, unpacked) {\n return pushchannelsubscription_1.default.fromResponseBody(body, unpacked ? undefined : format);\n }).get(params, callback);\n };\n ChannelSubscriptions.prototype.removeWhere = function (params, callback) {\n var rest = this.rest, format = rest.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, headers = Utils.defaultGetHeaders(rest.options, format);\n if (typeof callback !== 'function') {\n if (this.rest.options.promises) {\n return Utils.promisify(this, 'removeWhere', arguments);\n }\n callback = noop;\n }\n if (rest.options.headers)\n Utils.mixin(headers, rest.options.headers);\n if (rest.options.pushFullWait)\n Utils.mixin(params, { fullWait: 'true' });\n resource_1.default['delete'](rest, '/push/channelSubscriptions', headers, params, null, function (err) { return callback(err); });\n };\n ChannelSubscriptions.prototype.listChannels = function (params, callback) {\n var rest = this.rest, format = rest.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, envelope = this.rest.http.supportsLinkHeaders ? undefined : format, headers = Utils.defaultGetHeaders(rest.options, format);\n if (typeof callback !== 'function') {\n if (this.rest.options.promises) {\n return Utils.promisify(this, 'listChannels', arguments);\n }\n callback = noop;\n }\n if (rest.options.headers)\n Utils.mixin(headers, rest.options.headers);\n if (rest.options.pushFullWait)\n Utils.mixin(params, { fullWait: 'true' });\n new paginatedresource_1.default(rest, '/push/channels', headers, envelope, function (body, headers, unpacked) {\n var parsedBody = (!unpacked && format ? Utils.decodeBody(body, format) : body);\n for (var i = 0; i < parsedBody.length; i++) {\n parsedBody[i] = String(parsedBody[i]);\n }\n return parsedBody;\n }).get(params, callback);\n };\n return ChannelSubscriptions;\n}());\nexports.default = Push;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar errorinfo_1 = tslib_1.__importDefault(__webpack_require__(4));\nvar DeviceFormFactor;\n(function (DeviceFormFactor) {\n DeviceFormFactor[\"Phone\"] = \"phone\";\n DeviceFormFactor[\"Tablet\"] = \"tablet\";\n DeviceFormFactor[\"Desktop\"] = \"desktop\";\n DeviceFormFactor[\"TV\"] = \"tv\";\n DeviceFormFactor[\"Watch\"] = \"watch\";\n DeviceFormFactor[\"Car\"] = \"car\";\n DeviceFormFactor[\"Embedded\"] = \"embedded\";\n DeviceFormFactor[\"Other\"] = \"other\";\n})(DeviceFormFactor || (DeviceFormFactor = {}));\nvar DevicePlatform;\n(function (DevicePlatform) {\n DevicePlatform[\"Android\"] = \"android\";\n DevicePlatform[\"IOS\"] = \"ios\";\n DevicePlatform[\"Browser\"] = \"browser\";\n})(DevicePlatform || (DevicePlatform = {}));\nvar DeviceDetails = /** @class */ (function () {\n function DeviceDetails() {\n }\n DeviceDetails.prototype.toJSON = function () {\n var _a, _b, _c;\n return {\n id: this.id,\n deviceSecret: this.deviceSecret,\n platform: this.platform,\n formFactor: this.formFactor,\n clientId: this.clientId,\n metadata: this.metadata,\n deviceIdentityToken: this.deviceIdentityToken,\n push: {\n recipient: (_a = this.push) === null || _a === void 0 ? void 0 : _a.recipient,\n state: (_b = this.push) === null || _b === void 0 ? void 0 : _b.state,\n error: (_c = this.push) === null || _c === void 0 ? void 0 : _c.error,\n },\n };\n };\n DeviceDetails.prototype.toString = function () {\n var _a, _b, _c, _d;\n var result = '[DeviceDetails';\n if (this.id)\n result += '; id=' + this.id;\n if (this.platform)\n result += '; platform=' + this.platform;\n if (this.formFactor)\n result += '; formFactor=' + this.formFactor;\n if (this.clientId)\n result += '; clientId=' + this.clientId;\n if (this.metadata)\n result += '; metadata=' + this.metadata;\n if (this.deviceIdentityToken)\n result += '; deviceIdentityToken=' + JSON.stringify(this.deviceIdentityToken);\n if ((_a = this.push) === null || _a === void 0 ? void 0 : _a.recipient)\n result += '; push.recipient=' + JSON.stringify(this.push.recipient);\n if ((_b = this.push) === null || _b === void 0 ? void 0 : _b.state)\n result += '; push.state=' + this.push.state;\n if ((_c = this.push) === null || _c === void 0 ? void 0 : _c.error)\n result += '; push.error=' + JSON.stringify(this.push.error);\n if ((_d = this.push) === null || _d === void 0 ? void 0 : _d.metadata)\n result += '; push.metadata=' + this.push.metadata;\n result += ']';\n return result;\n };\n DeviceDetails.fromResponseBody = function (body, format) {\n if (format) {\n body = Utils.decodeBody(body, format);\n }\n if (Utils.isArray(body)) {\n return DeviceDetails.fromValuesArray(body);\n }\n else {\n return DeviceDetails.fromValues(body);\n }\n };\n DeviceDetails.fromValues = function (values) {\n values.error = values.error && errorinfo_1.default.fromValues(values.error);\n return Object.assign(new DeviceDetails(), values);\n };\n DeviceDetails.fromValuesArray = function (values) {\n var count = values.length, result = new Array(count);\n for (var i = 0; i < count; i++)\n result[i] = DeviceDetails.fromValues(values[i]);\n return result;\n };\n DeviceDetails.toRequestBody = Utils.encodeBody;\n return DeviceDetails;\n}());\nexports.default = DeviceDetails;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar PushChannelSubscription = /** @class */ (function () {\n function PushChannelSubscription() {\n }\n /**\n * Overload toJSON() to intercept JSON.stringify()\n * @return {*}\n */\n PushChannelSubscription.prototype.toJSON = function () {\n return {\n channel: this.channel,\n deviceId: this.deviceId,\n clientId: this.clientId,\n };\n };\n PushChannelSubscription.prototype.toString = function () {\n var result = '[PushChannelSubscription';\n if (this.channel)\n result += '; channel=' + this.channel;\n if (this.deviceId)\n result += '; deviceId=' + this.deviceId;\n if (this.clientId)\n result += '; clientId=' + this.clientId;\n result += ']';\n return result;\n };\n PushChannelSubscription.fromResponseBody = function (body, format) {\n if (format) {\n body = Utils.decodeBody(body, format);\n }\n if (Utils.isArray(body)) {\n return PushChannelSubscription.fromValuesArray(body);\n }\n else {\n return PushChannelSubscription.fromValues(body);\n }\n };\n PushChannelSubscription.fromValues = function (values) {\n return Object.assign(new PushChannelSubscription(), values);\n };\n PushChannelSubscription.fromValuesArray = function (values) {\n var count = values.length, result = new Array(count);\n for (var i = 0; i < count; i++)\n result[i] = PushChannelSubscription.fromValues(values[i]);\n return result;\n };\n PushChannelSubscription.toRequestBody = Utils.encodeBody;\n return PushChannelSubscription;\n}());\nexports.default = PushChannelSubscription;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar MessageCount = /** @class */ (function () {\n function MessageCount(values) {\n this.count = (values && values.count) || 0;\n this.data = (values && values.data) || 0;\n this.uncompressedData = (values && values.uncompressedData) || 0;\n this.failed = (values && values.failed) || 0;\n this.refused = (values && values.refused) || 0;\n }\n return MessageCount;\n}());\nvar MessageCategory = /** @class */ (function (_super) {\n tslib_1.__extends(MessageCategory, _super);\n function MessageCategory(values) {\n var _this = _super.call(this, values) || this;\n if (values && values.category) {\n _this.category = {};\n Utils.forInOwnNonNullProperties(values.category, function (prop) {\n _this.category[prop] = new MessageCount(values.category[prop]);\n });\n }\n return _this;\n }\n return MessageCategory;\n}(MessageCount));\nvar ResourceCount = /** @class */ (function () {\n function ResourceCount(values) {\n this.peak = (values && values.peak) || 0;\n this.min = (values && values.min) || 0;\n this.mean = (values && values.mean) || 0;\n this.opened = (values && values.opened) || 0;\n this.refused = (values && values.refused) || 0;\n }\n return ResourceCount;\n}());\nvar RequestCount = /** @class */ (function () {\n function RequestCount(values) {\n this.succeeded = (values && values.succeeded) || 0;\n this.failed = (values && values.failed) || 0;\n this.refused = (values && values.refused) || 0;\n }\n return RequestCount;\n}());\nvar ConnectionTypes = /** @class */ (function () {\n function ConnectionTypes(values) {\n this.plain = new ResourceCount(values && values.plain);\n this.tls = new ResourceCount(values && values.tls);\n this.all = new ResourceCount(values && values.all);\n }\n return ConnectionTypes;\n}());\nvar MessageTypes = /** @class */ (function () {\n function MessageTypes(values) {\n this.messages = new MessageCategory(values && values.messages);\n this.presence = new MessageCategory(values && values.presence);\n this.all = new MessageCategory(values && values.all);\n }\n return MessageTypes;\n}());\nvar MessageTraffic = /** @class */ (function () {\n function MessageTraffic(values) {\n this.realtime = new MessageTypes(values && values.realtime);\n this.rest = new MessageTypes(values && values.rest);\n this.webhook = new MessageTypes(values && values.webhook);\n this.sharedQueue = new MessageTypes(values && values.sharedQueue);\n this.externalQueue = new MessageTypes(values && values.externalQueue);\n this.httpEvent = new MessageTypes(values && values.httpEvent);\n this.push = new MessageTypes(values && values.push);\n this.all = new MessageTypes(values && values.all);\n }\n return MessageTraffic;\n}());\nvar MessageDirections = /** @class */ (function () {\n function MessageDirections(values) {\n this.all = new MessageTypes(values && values.all);\n this.inbound = new MessageTraffic(values && values.inbound);\n this.outbound = new MessageTraffic(values && values.outbound);\n }\n return MessageDirections;\n}());\nvar XchgMessages = /** @class */ (function () {\n function XchgMessages(values) {\n this.all = new MessageTypes(values && values.all);\n this.producerPaid = new MessageDirections(values && values.producerPaid);\n this.consumerPaid = new MessageDirections(values && values.consumerPaid);\n }\n return XchgMessages;\n}());\nvar PushStats = /** @class */ (function () {\n function PushStats(values) {\n this.messages = (values && values.messages) || 0;\n var notifications = values && values.notifications;\n this.notifications = {\n invalid: (notifications && notifications.invalid) || 0,\n attempted: (notifications && notifications.attempted) || 0,\n successful: (notifications && notifications.successful) || 0,\n failed: (notifications && notifications.failed) || 0,\n };\n this.directPublishes = (values && values.directPublishes) || 0;\n }\n return PushStats;\n}());\nvar ProcessedCount = /** @class */ (function () {\n function ProcessedCount(values) {\n this.succeeded = (values && values.succeeded) || 0;\n this.skipped = (values && values.skipped) || 0;\n this.failed = (values && values.failed) || 0;\n }\n return ProcessedCount;\n}());\nvar ProcessedMessages = /** @class */ (function () {\n function ProcessedMessages(values) {\n var _this = this;\n this.delta = undefined;\n if (values && values.delta) {\n this.delta = {};\n Utils.forInOwnNonNullProperties(values.delta, function (prop) {\n _this.delta[prop] = new ProcessedCount(values.delta[prop]);\n });\n }\n }\n return ProcessedMessages;\n}());\nvar Stats = /** @class */ (function (_super) {\n tslib_1.__extends(Stats, _super);\n function Stats(values) {\n var _this = _super.call(this, values) || this;\n _this.persisted = new MessageTypes(values && values.persisted);\n _this.connections = new ConnectionTypes(values && values.connections);\n _this.channels = new ResourceCount(values && values.channels);\n _this.apiRequests = new RequestCount(values && values.apiRequests);\n _this.tokenRequests = new RequestCount(values && values.tokenRequests);\n _this.xchgProducer = new XchgMessages(values && values.xchgProducer);\n _this.xchgConsumer = new XchgMessages(values && values.xchgConsumer);\n _this.push = new PushStats(values && values.pushStats);\n _this.processed = new ProcessedMessages(values && values.processed);\n _this.inProgress = (values && values.inProgress) || undefined;\n _this.unit = (values && values.unit) || undefined;\n _this.intervalId = (values && values.intervalId) || undefined;\n return _this;\n }\n Stats.fromValues = function (values) {\n return new Stats(values);\n };\n return Stats;\n}(MessageDirections));\nexports.default = Stats;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar rest_1 = tslib_1.__importDefault(__webpack_require__(30));\nvar eventemitter_1 = tslib_1.__importDefault(__webpack_require__(7));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar connection_1 = tslib_1.__importDefault(__webpack_require__(51));\nvar realtimechannel_1 = tslib_1.__importDefault(__webpack_require__(38));\nvar defaults_1 = tslib_1.__importDefault(__webpack_require__(8));\nvar errorinfo_1 = tslib_1.__importDefault(__webpack_require__(4));\nvar protocolmessage_1 = tslib_1.__importDefault(__webpack_require__(10));\nvar connectionmanager_1 = tslib_1.__importDefault(__webpack_require__(35));\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nvar message_1 = tslib_1.__importDefault(__webpack_require__(9));\nvar Realtime = /** @class */ (function (_super) {\n tslib_1.__extends(Realtime, _super);\n function Realtime(options) {\n var _this = _super.call(this, options) || this;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Realtime()', '');\n _this.connection = new connection_1.default(_this, _this.options);\n _this.channels = new Channels(_this);\n if (options.autoConnect !== false)\n _this.connect();\n return _this;\n }\n Realtime.prototype.connect = function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Realtime.connect()', '');\n this.connection.connect();\n };\n Realtime.prototype.close = function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Realtime.close()', '');\n this.connection.close();\n };\n Realtime.Promise = function (options) {\n options = defaults_1.default.objectifyOptions(options);\n options.promises = true;\n return new Realtime(options);\n };\n Realtime.Callbacks = Realtime;\n Realtime.Utils = Utils;\n Realtime.ConnectionManager = connectionmanager_1.default;\n Realtime.Platform = platform_1.default;\n Realtime.ProtocolMessage = protocolmessage_1.default;\n Realtime.Message = message_1.default;\n return Realtime;\n}(rest_1.default));\nvar Channels = /** @class */ (function (_super) {\n tslib_1.__extends(Channels, _super);\n function Channels(realtime) {\n var _this = _super.call(this) || this;\n _this.realtime = realtime;\n _this.all = Object.create(null);\n realtime.connection.connectionManager.on('transport.active', function () {\n _this.onTransportActive();\n });\n return _this;\n }\n Channels.prototype.channelSerials = function () {\n var serials = {};\n for (var _i = 0, _a = Utils.keysArray(this.all, true); _i < _a.length; _i++) {\n var name_1 = _a[_i];\n var channel = this.all[name_1];\n if (channel.properties.channelSerial) {\n serials[name_1] = channel.properties.channelSerial;\n }\n }\n return serials;\n };\n // recoverChannels gets the given channels and sets their channel serials.\n Channels.prototype.recoverChannels = function (channelSerials) {\n for (var _i = 0, _a = Utils.keysArray(channelSerials, true); _i < _a.length; _i++) {\n var name_2 = _a[_i];\n var channel = this.get(name_2);\n channel.properties.channelSerial = channelSerials[name_2];\n }\n };\n Channels.prototype.onChannelMessage = function (msg) {\n var channelName = msg.channel;\n if (channelName === undefined) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Channels.onChannelMessage()', 'received event unspecified channel, action = ' + msg.action);\n return;\n }\n var channel = this.all[channelName];\n if (!channel) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Channels.onChannelMessage()', 'received event for non-existent channel: ' + channelName);\n return;\n }\n channel.onMessage(msg);\n };\n /* called when a transport becomes connected; reattempt attach/detach\n * for channels that are attaching or detaching. */\n Channels.prototype.onTransportActive = function () {\n for (var channelName in this.all) {\n var channel = this.all[channelName];\n if (channel.state === 'attaching' || channel.state === 'detaching') {\n channel.checkPendingState();\n }\n else if (channel.state === 'suspended') {\n channel._attach(false, null);\n }\n else if (channel.state === 'attached') {\n // Note explicity request the state, channel.attach() would do nothing\n // as its already attached.\n channel.requestState('attaching');\n }\n }\n };\n /* Connection interruptions (ie when the connection will no longer queue\n * events) imply connection state changes for any channel which is either\n * attached, pending, or will attempt to become attached in the future */\n Channels.prototype.propogateConnectionInterruption = function (connectionState, reason) {\n var connectionStateToChannelState = {\n closing: 'detached',\n closed: 'detached',\n failed: 'failed',\n suspended: 'suspended',\n };\n var fromChannelStates = ['attaching', 'attached', 'detaching', 'suspended'];\n var toChannelState = connectionStateToChannelState[connectionState];\n for (var channelId in this.all) {\n var channel = this.all[channelId];\n if (Utils.arrIn(fromChannelStates, channel.state)) {\n channel.notifyState(toChannelState, reason);\n }\n }\n };\n Channels.prototype.get = function (name, channelOptions) {\n name = String(name);\n var channel = this.all[name];\n if (!channel) {\n channel = this.all[name] = new realtimechannel_1.default(this.realtime, name, channelOptions);\n }\n else if (channelOptions) {\n if (channel._shouldReattachToSetOptions(channelOptions, channel.channelOptions)) {\n throw new errorinfo_1.default('Channels.get() cannot be used to set channel options that would cause the channel to reattach. Please, use RealtimeChannel.setOptions() instead.', 40000, 400);\n }\n channel.setOptions(channelOptions);\n }\n return channel;\n };\n Channels.prototype.getDerived = function (name, deriveOptions, channelOptions) {\n if (deriveOptions.filter) {\n var filter = Utils.toBase64(deriveOptions.filter);\n var match = Utils.matchDerivedChannel(name);\n name = \"[filter=\".concat(filter).concat(match.qualifierParam, \"]\").concat(match.channelName);\n }\n return this.get(name, channelOptions);\n };\n /* Included to support certain niche use-cases; most users should ignore this.\n * Please do not use this unless you know what you're doing */\n Channels.prototype.release = function (name) {\n name = String(name);\n var channel = this.all[name];\n if (!channel) {\n return;\n }\n var releaseErr = channel.getReleaseErr();\n if (releaseErr) {\n throw releaseErr;\n }\n delete this.all[name];\n };\n return Channels;\n}(eventemitter_1.default));\nexports.default = Realtime;\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar eventemitter_1 = tslib_1.__importDefault(__webpack_require__(7));\nvar connectionmanager_1 = tslib_1.__importDefault(__webpack_require__(35));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar connectionstatechange_1 = tslib_1.__importDefault(__webpack_require__(37));\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nfunction noop() { }\nvar Connection = /** @class */ (function (_super) {\n tslib_1.__extends(Connection, _super);\n function Connection(ably, options) {\n var _this = _super.call(this) || this;\n _this.whenState = (function (state, listener) {\n return eventemitter_1.default.prototype.whenState.call(_this, state, _this.state, listener, new connectionstatechange_1.default(undefined, state));\n });\n _this.ably = ably;\n _this.connectionManager = new connectionmanager_1.default(ably, options);\n _this.state = _this.connectionManager.state.state;\n _this.key = undefined;\n _this.id = undefined;\n _this.errorReason = null;\n _this.connectionManager.on('connectionstate', function (stateChange) {\n var state = (_this.state = stateChange.current);\n platform_1.default.Config.nextTick(function () {\n _this.emit(state, stateChange);\n });\n });\n _this.connectionManager.on('update', function (stateChange) {\n platform_1.default.Config.nextTick(function () {\n _this.emit('update', stateChange);\n });\n });\n return _this;\n }\n Connection.prototype.connect = function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Connection.connect()', '');\n this.connectionManager.requestState({ state: 'connecting' });\n };\n Connection.prototype.ping = function (callback) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Connection.ping()', '');\n if (!callback) {\n if (this.ably.options.promises) {\n return Utils.promisify(this, 'ping', arguments);\n }\n callback = noop;\n }\n this.connectionManager.ping(null, callback);\n };\n Connection.prototype.close = function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'Connection.close()', 'connectionKey = ' + this.key);\n this.connectionManager.requestState({ state: 'closing' });\n };\n Object.defineProperty(Connection.prototype, \"recoveryKey\", {\n get: function () {\n return this.createRecoveryKey();\n },\n enumerable: false,\n configurable: true\n });\n Connection.prototype.createRecoveryKey = function () {\n return this.connectionManager.createRecoveryKey();\n };\n return Connection;\n}(eventemitter_1.default));\nexports.default = Connection;\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PendingMessage = void 0;\nvar tslib_1 = __webpack_require__(0);\nvar protocolmessage_1 = tslib_1.__importDefault(__webpack_require__(10));\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar eventemitter_1 = tslib_1.__importDefault(__webpack_require__(7));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar messagequeue_1 = tslib_1.__importDefault(__webpack_require__(36));\nvar errorinfo_1 = tslib_1.__importDefault(__webpack_require__(4));\nvar actions = protocolmessage_1.default.Action;\nvar PendingMessage = /** @class */ (function () {\n function PendingMessage(message, callback) {\n this.message = message;\n this.callback = callback;\n this.merged = false;\n var action = message.action;\n this.sendAttempted = false;\n this.ackRequired = action == actions.MESSAGE || action == actions.PRESENCE;\n }\n return PendingMessage;\n}());\nexports.PendingMessage = PendingMessage;\nvar Protocol = /** @class */ (function (_super) {\n tslib_1.__extends(Protocol, _super);\n function Protocol(transport) {\n var _this = _super.call(this) || this;\n _this.transport = transport;\n _this.messageQueue = new messagequeue_1.default();\n transport.on('ack', function (serial, count) {\n _this.onAck(serial, count);\n });\n transport.on('nack', function (serial, count, err) {\n _this.onNack(serial, count, err);\n });\n return _this;\n }\n Protocol.prototype.onAck = function (serial, count) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Protocol.onAck()', 'serial = ' + serial + '; count = ' + count);\n this.messageQueue.completeMessages(serial, count);\n };\n Protocol.prototype.onNack = function (serial, count, err) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'Protocol.onNack()', 'serial = ' + serial + '; count = ' + count + '; err = ' + Utils.inspectError(err));\n if (!err) {\n err = new errorinfo_1.default('Unable to send message; channel not responding', 50001, 500);\n }\n this.messageQueue.completeMessages(serial, count, err);\n };\n Protocol.prototype.onceIdle = function (listener) {\n var messageQueue = this.messageQueue;\n if (messageQueue.count() === 0) {\n listener();\n return;\n }\n messageQueue.once('idle', listener);\n };\n Protocol.prototype.send = function (pendingMessage) {\n if (pendingMessage.ackRequired) {\n this.messageQueue.push(pendingMessage);\n }\n if (logger_1.default.shouldLog(logger_1.default.LOG_MICRO)) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'Protocol.send()', 'sending msg; ' + protocolmessage_1.default.stringify(pendingMessage.message));\n }\n pendingMessage.sendAttempted = true;\n this.transport.send(pendingMessage.message);\n };\n Protocol.prototype.getTransport = function () {\n return this.transport;\n };\n Protocol.prototype.getPendingMessages = function () {\n return this.messageQueue.copyAll();\n };\n Protocol.prototype.clearPendingMessages = function () {\n return this.messageQueue.clear();\n };\n Protocol.prototype.finish = function () {\n var transport = this.transport;\n this.onceIdle(function () {\n transport.disconnect();\n });\n };\n return Protocol;\n}(eventemitter_1.default));\nexports.default = Protocol;\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar transport_1 = tslib_1.__importDefault(__webpack_require__(26));\nvar defaults_1 = tslib_1.__importDefault(__webpack_require__(8));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar protocolmessage_1 = tslib_1.__importDefault(__webpack_require__(10));\nvar errorinfo_1 = tslib_1.__importDefault(__webpack_require__(4));\nvar shortName = 'web_socket';\nfunction isNodeWebSocket(ws) {\n return !!ws.on;\n}\nvar WebSocketTransport = /** @class */ (function (_super) {\n tslib_1.__extends(WebSocketTransport, _super);\n function WebSocketTransport(connectionManager, auth, params) {\n var _this = _super.call(this, connectionManager, auth, params) || this;\n _this.shortName = shortName;\n /* If is a browser, can't detect pings, so request protocol heartbeats */\n params.heartbeats = platform_1.default.Config.useProtocolHeartbeats;\n _this.wsHost = defaults_1.default.getHost(params.options, params.host, true);\n return _this;\n }\n WebSocketTransport.isAvailable = function () {\n return !!platform_1.default.Config.WebSocket;\n };\n WebSocketTransport.prototype.createWebSocket = function (uri, connectParams) {\n this.uri = uri + Utils.toQueryString(connectParams);\n return new platform_1.default.Config.WebSocket(this.uri);\n };\n WebSocketTransport.prototype.toString = function () {\n return 'WebSocketTransport; uri=' + this.uri;\n };\n WebSocketTransport.prototype.connect = function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'WebSocketTransport.connect()', 'starting');\n transport_1.default.prototype.connect.call(this);\n var self = this, params = this.params, options = params.options;\n var wsScheme = options.tls ? 'wss://' : 'ws://';\n var wsUri = wsScheme + this.wsHost + ':' + defaults_1.default.getPort(options) + '/';\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'WebSocketTransport.connect()', 'uri: ' + wsUri);\n this.auth.getAuthParams(function (err, authParams) {\n if (self.isDisposed) {\n return;\n }\n var paramStr = '';\n for (var param in authParams)\n paramStr += ' ' + param + ': ' + authParams[param] + ';';\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'WebSocketTransport.connect()', 'authParams:' + paramStr + ' err: ' + err);\n if (err) {\n self.disconnect(err);\n return;\n }\n var connectParams = params.getConnectParams(authParams);\n try {\n var wsConnection = (self.wsConnection = self.createWebSocket(wsUri, connectParams));\n wsConnection.binaryType = platform_1.default.Config.binaryType;\n wsConnection.onopen = function () {\n self.onWsOpen();\n };\n wsConnection.onclose = function (ev) {\n self.onWsClose(ev);\n };\n wsConnection.onmessage = function (ev) {\n self.onWsData(ev.data);\n };\n wsConnection.onerror = function (ev) {\n self.onWsError(ev);\n };\n if (isNodeWebSocket(wsConnection)) {\n /* node; browsers currently don't have a general eventemitter and can't detect\n * pings. Also, no need to reply with a pong explicitly, ws lib handles that */\n wsConnection.on('ping', function () {\n self.onActivity();\n });\n }\n }\n catch (e) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'WebSocketTransport.connect()', 'Unexpected exception creating websocket: err = ' + (e.stack || e.message));\n self.disconnect(e);\n }\n });\n };\n WebSocketTransport.prototype.send = function (message) {\n var wsConnection = this.wsConnection;\n if (!wsConnection) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'WebSocketTransport.send()', 'No socket connection');\n return;\n }\n try {\n wsConnection.send(protocolmessage_1.default.serialize(message, this.params.format));\n }\n catch (e) {\n var msg = 'Exception from ws connection when trying to send: ' + Utils.inspectError(e);\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'WebSocketTransport.send()', msg);\n /* Don't try to request a disconnect, that'll just involve sending data\n * down the websocket again. Just finish the transport. */\n this.finish('disconnected', new errorinfo_1.default(msg, 50000, 500));\n }\n };\n WebSocketTransport.prototype.onWsData = function (data) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'WebSocketTransport.onWsData()', 'data received; length = ' + data.length + '; type = ' + typeof data);\n try {\n this.onProtocolMessage(protocolmessage_1.default.deserialize(data, this.format));\n }\n catch (e) {\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'WebSocketTransport.onWsData()', 'Unexpected exception handing channel message: ' + e.stack);\n }\n };\n WebSocketTransport.prototype.onWsOpen = function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'WebSocketTransport.onWsOpen()', 'opened WebSocket');\n this.emit('preconnect');\n };\n WebSocketTransport.prototype.onWsClose = function (ev) {\n var wasClean, code;\n if (typeof ev == 'object') {\n /* W3C spec-compatible */\n code = ev.code;\n // ev.wasClean is undefined in reactnative\n wasClean = ev.wasClean || code === 1000;\n } /*if(typeof(ev) == 'number')*/\n else {\n /* ws in node */\n code = ev;\n wasClean = code == 1000;\n }\n delete this.wsConnection;\n if (wasClean) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'WebSocketTransport.onWsClose()', 'Cleanly closed WebSocket');\n var err = new errorinfo_1.default('Websocket closed', 80003, 400);\n this.finish('disconnected', err);\n }\n else {\n var msg = 'Unclean disconnection of WebSocket ; code = ' + code, err = new errorinfo_1.default(msg, 80003, 400);\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'WebSocketTransport.onWsClose()', msg);\n this.finish('disconnected', err);\n }\n this.emit('disposed');\n };\n WebSocketTransport.prototype.onWsError = function (err) {\n var _this = this;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'WebSocketTransport.onError()', 'Error from WebSocket: ' + err.message);\n /* Wait a tick before aborting: if the websocket was connected, this event\n * will be immediately followed by an onclose event with a close code. Allow\n * that to close it (so we see the close code) rather than anticipating it */\n platform_1.default.Config.nextTick(function () {\n _this.disconnect(Error(err.message));\n });\n };\n WebSocketTransport.prototype.dispose = function () {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'WebSocketTransport.dispose()', '');\n this.isDisposed = true;\n var wsConnection = this.wsConnection;\n if (wsConnection) {\n /* Ignore any messages that come through after dispose() is called but before\n * websocket is actually closed. (mostly would be harmless, but if it's a\n * CONNECTED, it'll re-tick isConnected and cause all sorts of havoc) */\n wsConnection.onmessage = function () { };\n delete this.wsConnection;\n /* defer until the next event loop cycle before closing the socket,\n * giving some implementations the opportunity to send any outstanding close message */\n platform_1.default.Config.nextTick(function () {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'WebSocketTransport.dispose()', 'closing websocket');\n if (!wsConnection) {\n throw new Error('WebSocketTransport.dispose(): wsConnection is not defined');\n }\n wsConnection.close();\n });\n }\n };\n return WebSocketTransport;\n}(transport_1.default));\nfunction initialiseTransport(connectionManager) {\n if (WebSocketTransport.isAvailable())\n connectionManager.supportedTransports[shortName] = WebSocketTransport;\n return WebSocketTransport;\n}\nexports.default = initialiseTransport;\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar presence_1 = tslib_1.__importDefault(__webpack_require__(34));\nvar eventemitter_1 = tslib_1.__importDefault(__webpack_require__(7));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar presencemessage_1 = tslib_1.__importDefault(__webpack_require__(16));\nvar errorinfo_1 = tslib_1.__importStar(__webpack_require__(4));\nvar realtimechannel_1 = tslib_1.__importDefault(__webpack_require__(38));\nvar multicaster_1 = tslib_1.__importDefault(__webpack_require__(24));\nvar channelstatechange_1 = tslib_1.__importDefault(__webpack_require__(39));\nvar noop = function () { };\nfunction getClientId(realtimePresence) {\n return realtimePresence.channel.realtime.auth.clientId;\n}\nfunction isAnonymousOrWildcard(realtimePresence) {\n var realtime = realtimePresence.channel.realtime;\n /* If not currently connected, we can't assume that we're an anonymous\n * client, as realtime may inform us of our clientId in the CONNECTED\n * message. So assume we're not anonymous and leave it to realtime to\n * return an error if we are */\n var clientId = realtime.auth.clientId;\n return (!clientId || clientId === '*') && realtime.connection.state === 'connected';\n}\n/* Callback is called only in the event of an error */\nfunction waitAttached(channel, callback, action) {\n switch (channel.state) {\n case 'attached':\n case 'suspended':\n action();\n break;\n case 'initialized':\n case 'detached':\n case 'detaching':\n case 'attaching':\n channel.attach(function (err) {\n if (err)\n callback(err);\n else\n action();\n });\n break;\n default:\n callback(errorinfo_1.default.fromValues(channel.invalidStateError()));\n }\n}\nfunction newerThan(item, existing) {\n /* RTP2b1: if either is synthesised, compare by timestamp */\n if (item.isSynthesized() || existing.isSynthesized()) {\n // RTP2b1a: if equal, prefer the newly-arrived one\n return item.timestamp >= existing.timestamp;\n }\n /* RTP2b2 */\n var itemOrderings = item.parseId(), existingOrderings = existing.parseId();\n if (itemOrderings.msgSerial === existingOrderings.msgSerial) {\n return itemOrderings.index > existingOrderings.index;\n }\n else {\n return itemOrderings.msgSerial > existingOrderings.msgSerial;\n }\n}\nvar RealtimePresence = /** @class */ (function (_super) {\n tslib_1.__extends(RealtimePresence, _super);\n function RealtimePresence(channel) {\n var _this = _super.call(this, channel) || this;\n _this.channel = channel;\n _this.syncComplete = false;\n _this.members = new PresenceMap(_this, function (item) { return item.clientId + ':' + item.connectionId; });\n // RTP17h: Store own members by clientId only.\n _this._myMembers = new PresenceMap(_this, function (item) { return item.clientId; });\n _this.subscriptions = new eventemitter_1.default();\n _this.pendingPresence = [];\n return _this;\n }\n RealtimePresence.prototype.enter = function (data, callback) {\n if (isAnonymousOrWildcard(this)) {\n throw new errorinfo_1.default('clientId must be specified to enter a presence channel', 40012, 400);\n }\n return this._enterOrUpdateClient(undefined, undefined, data, 'enter', callback);\n };\n RealtimePresence.prototype.update = function (data, callback) {\n if (isAnonymousOrWildcard(this)) {\n throw new errorinfo_1.default('clientId must be specified to update presence data', 40012, 400);\n }\n return this._enterOrUpdateClient(undefined, undefined, data, 'update', callback);\n };\n RealtimePresence.prototype.enterClient = function (clientId, data, callback) {\n return this._enterOrUpdateClient(undefined, clientId, data, 'enter', callback);\n };\n RealtimePresence.prototype.updateClient = function (clientId, data, callback) {\n return this._enterOrUpdateClient(undefined, clientId, data, 'update', callback);\n };\n RealtimePresence.prototype._enterOrUpdateClient = function (id, clientId, data, action, callback) {\n var _this = this;\n if (!callback) {\n if (typeof data === 'function') {\n callback = data;\n data = null;\n }\n else {\n if (this.channel.realtime.options.promises) {\n return Utils.promisify(this, '_enterOrUpdateClient', [id, clientId, data, action]);\n }\n callback = noop;\n }\n }\n var channel = this.channel;\n if (!channel.connectionManager.activeState()) {\n callback(channel.connectionManager.getError());\n return;\n }\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'RealtimePresence.' + action + 'Client()', 'channel = ' + channel.name + ', id = ' + id + ', client = ' + (clientId || '(implicit) ' + getClientId(this)));\n var presence = presencemessage_1.default.fromData(data);\n presence.action = action;\n if (id) {\n presence.id = id;\n }\n if (clientId) {\n presence.clientId = clientId;\n }\n presencemessage_1.default.encode(presence, channel.channelOptions, function (err) {\n if (err) {\n callback(err);\n return;\n }\n switch (channel.state) {\n case 'attached':\n channel.sendPresence(presence, callback);\n break;\n case 'initialized':\n case 'detached':\n channel.attach();\n // eslint-disable-next-line no-fallthrough\n case 'attaching':\n _this.pendingPresence.push({\n presence: presence,\n callback: callback,\n });\n break;\n default:\n err = new errorinfo_1.PartialErrorInfo('Unable to ' + action + ' presence channel while in ' + channel.state + ' state', 90001);\n err.code = 90001;\n callback(err);\n }\n });\n };\n RealtimePresence.prototype.leave = function (data, callback) {\n if (isAnonymousOrWildcard(this)) {\n throw new errorinfo_1.default('clientId must have been specified to enter or leave a presence channel', 40012, 400);\n }\n return this.leaveClient(undefined, data, callback);\n };\n RealtimePresence.prototype.leaveClient = function (clientId, data, callback) {\n if (!callback) {\n if (typeof data === 'function') {\n callback = data;\n data = null;\n }\n else {\n if (this.channel.realtime.options.promises) {\n return Utils.promisify(this, 'leaveClient', [clientId, data]);\n }\n callback = noop;\n }\n }\n var channel = this.channel;\n if (!channel.connectionManager.activeState()) {\n callback === null || callback === void 0 ? void 0 : callback(channel.connectionManager.getError());\n return;\n }\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'RealtimePresence.leaveClient()', 'leaving; channel = ' + this.channel.name + ', client = ' + clientId);\n var presence = presencemessage_1.default.fromData(data);\n presence.action = 'leave';\n if (clientId) {\n presence.clientId = clientId;\n }\n switch (channel.state) {\n case 'attached':\n channel.sendPresence(presence, callback);\n break;\n case 'attaching':\n this.pendingPresence.push({\n presence: presence,\n callback: callback,\n });\n break;\n case 'initialized':\n case 'failed': {\n /* we're not attached; therefore we let any entered status\n * timeout by itself instead of attaching just in order to leave */\n var err = new errorinfo_1.PartialErrorInfo('Unable to leave presence channel (incompatible state)', 90001);\n callback === null || callback === void 0 ? void 0 : callback(err);\n break;\n }\n default:\n callback === null || callback === void 0 ? void 0 : callback(channel.invalidStateError());\n }\n };\n // Return type is any to avoid conflict with base Presence class\n RealtimePresence.prototype.get = function (params, callback) {\n var _this = this;\n var args = Array.prototype.slice.call(arguments);\n if (args.length == 1 && typeof args[0] == 'function')\n args.unshift(null);\n params = args[0];\n callback = args[1];\n var waitForSync = !params || ('waitForSync' in params ? params.waitForSync : true);\n if (!callback) {\n if (this.channel.realtime.options.promises) {\n return Utils.promisify(this, 'get', args);\n }\n callback = noop;\n }\n function returnMembers(members) {\n callback(null, params ? members.list(params) : members.values());\n }\n /* Special-case the suspended state: can still get (stale) presence set if waitForSync is false */\n if (this.channel.state === 'suspended') {\n if (waitForSync) {\n callback(errorinfo_1.default.fromValues({\n statusCode: 400,\n code: 91005,\n message: 'Presence state is out of sync due to channel being in the SUSPENDED state',\n }));\n }\n else {\n returnMembers(this.members);\n }\n return;\n }\n waitAttached(this.channel, callback, function () {\n var members = _this.members;\n if (waitForSync) {\n members.waitSync(function () {\n returnMembers(members);\n });\n }\n else {\n returnMembers(members);\n }\n });\n };\n RealtimePresence.prototype.history = function (params, callback) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'RealtimePresence.history()', 'channel = ' + this.name);\n /* params and callback are optional; see if params contains the callback */\n if (callback === undefined) {\n if (typeof params == 'function') {\n callback = params;\n params = null;\n }\n else {\n if (this.channel.realtime.options.promises) {\n return Utils.promisify(this, 'history', arguments);\n }\n callback = noop;\n }\n }\n if (params && params.untilAttach) {\n if (this.channel.state === 'attached') {\n delete params.untilAttach;\n params.from_serial = this.channel.properties.attachSerial;\n }\n else {\n callback(new errorinfo_1.default('option untilAttach requires the channel to be attached, was: ' + this.channel.state, 40000, 400));\n }\n }\n presence_1.default.prototype._history.call(this, params, callback);\n };\n RealtimePresence.prototype.setPresence = function (presenceSet, isSync, syncChannelSerial) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'RealtimePresence.setPresence()', 'received presence for ' + presenceSet.length + ' participants; syncChannelSerial = ' + syncChannelSerial);\n var syncCursor, match;\n var members = this.members, myMembers = this._myMembers, broadcastMessages = [], connId = this.channel.connectionManager.connectionId;\n if (isSync) {\n this.members.startSync();\n if (syncChannelSerial && (match = syncChannelSerial.match(/^[\\w-]+:(.*)$/))) {\n syncCursor = match[1];\n }\n }\n for (var i = 0; i < presenceSet.length; i++) {\n var presence = presencemessage_1.default.fromValues(presenceSet[i]);\n switch (presence.action) {\n case 'leave':\n if (members.remove(presence)) {\n broadcastMessages.push(presence);\n }\n if (presence.connectionId === connId && !presence.isSynthesized()) {\n myMembers.remove(presence);\n }\n break;\n case 'enter':\n case 'present':\n case 'update':\n if (members.put(presence)) {\n broadcastMessages.push(presence);\n }\n if (presence.connectionId === connId) {\n myMembers.put(presence);\n }\n break;\n }\n }\n /* if this is the last (or only) message in a sequence of sync updates, end the sync */\n if (isSync && !syncCursor) {\n members.endSync();\n this.channel.syncChannelSerial = null;\n }\n /* broadcast to listeners */\n for (var i = 0; i < broadcastMessages.length; i++) {\n var presence = broadcastMessages[i];\n this.subscriptions.emit(presence.action, presence);\n }\n };\n RealtimePresence.prototype.onAttached = function (hasPresence) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'RealtimePresence.onAttached()', 'channel = ' + this.channel.name + ', hasPresence = ' + hasPresence);\n if (hasPresence) {\n this.members.startSync();\n }\n else {\n this._synthesizeLeaves(this.members.values());\n this.members.clear();\n }\n // RTP17f: Re-enter own members when moving into the attached state.\n this._ensureMyMembersPresent();\n /* NB this must be after the _ensureMyMembersPresent call, which may add items to pendingPresence */\n var pendingPresence = this.pendingPresence, pendingPresCount = pendingPresence.length;\n if (pendingPresCount) {\n this.pendingPresence = [];\n var presenceArray = [];\n var multicaster = multicaster_1.default.create();\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'RealtimePresence.onAttached', 'sending ' + pendingPresCount + ' queued presence messages');\n for (var i = 0; i < pendingPresCount; i++) {\n var event_1 = pendingPresence[i];\n presenceArray.push(event_1.presence);\n multicaster.push(event_1.callback);\n }\n this.channel.sendPresence(presenceArray, multicaster);\n }\n };\n RealtimePresence.prototype.actOnChannelState = function (state, hasPresence, err) {\n switch (state) {\n case 'attached':\n this.onAttached(hasPresence);\n break;\n case 'detached':\n case 'failed':\n this._clearMyMembers();\n this.members.clear();\n /* falls through */\n case 'suspended':\n this.failPendingPresence(err);\n break;\n }\n };\n RealtimePresence.prototype.failPendingPresence = function (err) {\n if (this.pendingPresence.length) {\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'RealtimeChannel.failPendingPresence', 'channel; name = ' + this.channel.name + ', err = ' + Utils.inspectError(err));\n for (var i = 0; i < this.pendingPresence.length; i++)\n try {\n this.pendingPresence[i].callback(err);\n // eslint-disable-next-line no-empty\n }\n catch (e) { }\n this.pendingPresence = [];\n }\n };\n RealtimePresence.prototype._clearMyMembers = function () {\n this._myMembers.clear();\n };\n RealtimePresence.prototype._ensureMyMembersPresent = function () {\n var _this = this;\n var myMembers = this._myMembers, reenterCb = function (err) {\n if (err) {\n var msg = 'Presence auto-re-enter failed: ' + err.toString();\n var wrappedErr = new errorinfo_1.default(msg, 91004, 400);\n logger_1.default.logAction(logger_1.default.LOG_ERROR, 'RealtimePresence._ensureMyMembersPresent()', msg);\n var change = new channelstatechange_1.default(_this.channel.state, _this.channel.state, true, false, wrappedErr);\n _this.channel.emit('update', change);\n }\n };\n for (var memberKey in myMembers.map) {\n var entry = myMembers.map[memberKey];\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'RealtimePresence._ensureMyMembersPresent()', 'Auto-reentering clientId \"' + entry.clientId + '\" into the presence set');\n // RTP17g: Send ENTER containing the member id, clientId and data\n // attributes.\n this._enterOrUpdateClient(entry.id, entry.clientId, entry.data, 'enter', reenterCb);\n }\n };\n RealtimePresence.prototype._synthesizeLeaves = function (items) {\n var subscriptions = this.subscriptions;\n Utils.arrForEach(items, function (item) {\n var presence = presencemessage_1.default.fromValues({\n action: 'leave',\n connectionId: item.connectionId,\n clientId: item.clientId,\n data: item.data,\n encoding: item.encoding,\n timestamp: Utils.now(),\n });\n subscriptions.emit('leave', presence);\n });\n };\n /* Deprecated */\n RealtimePresence.prototype.on = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n logger_1.default.renamedMethod('RealtimePresence', 'on', 'subscribe');\n this.subscribe.apply(this, args);\n };\n /* Deprecated */\n RealtimePresence.prototype.off = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n logger_1.default.renamedMethod('RealtimePresence', 'off', 'unsubscribe');\n this.unsubscribe.apply(this, args);\n };\n RealtimePresence.prototype.subscribe = function () {\n var _args = []; /* [event], listener, [callback] */\n for (var _i = 0 /* [event], listener, [callback] */; _i < arguments.length /* [event], listener, [callback] */; _i++ /* [event], listener, [callback] */) {\n _args[_i] = arguments[_i]; /* [event], listener, [callback] */\n }\n var args = realtimechannel_1.default.processListenerArgs(_args);\n var event = args[0];\n var listener = args[1];\n var callback = args[2];\n var channel = this.channel;\n if (!callback) {\n if (this.channel.realtime.options.promises) {\n return Utils.promisify(this, 'subscribe', [event, listener]);\n }\n callback = noop;\n }\n if (channel.state === 'failed') {\n callback(errorinfo_1.default.fromValues(channel.invalidStateError()));\n return;\n }\n this.subscriptions.on(event, listener);\n channel.attach(callback);\n };\n RealtimePresence.prototype.unsubscribe = function () {\n var _args = []; /* [event], listener */\n for (var _i = 0 /* [event], listener */; _i < arguments.length /* [event], listener */; _i++ /* [event], listener */) {\n _args[_i] = arguments[_i]; /* [event], listener */\n }\n var args = realtimechannel_1.default.processListenerArgs(_args);\n var event = args[0];\n var listener = args[1];\n this.subscriptions.off(event, listener);\n };\n return RealtimePresence;\n}(presence_1.default));\nvar PresenceMap = /** @class */ (function (_super) {\n tslib_1.__extends(PresenceMap, _super);\n function PresenceMap(presence, memberKey) {\n var _this = _super.call(this) || this;\n _this.presence = presence;\n _this.map = Object.create(null);\n _this.syncInProgress = false;\n _this.residualMembers = null;\n _this.memberKey = memberKey;\n return _this;\n }\n PresenceMap.prototype.get = function (key) {\n return this.map[key];\n };\n PresenceMap.prototype.getClient = function (clientId) {\n var map = this.map, result = [];\n for (var key in map) {\n var item = map[key];\n if (item.clientId == clientId && item.action != 'absent')\n result.push(item);\n }\n return result;\n };\n PresenceMap.prototype.list = function (params) {\n var map = this.map, clientId = params && params.clientId, connectionId = params && params.connectionId, result = [];\n for (var key in map) {\n var item = map[key];\n if (item.action === 'absent')\n continue;\n if (clientId && clientId != item.clientId)\n continue;\n if (connectionId && connectionId != item.connectionId)\n continue;\n result.push(item);\n }\n return result;\n };\n PresenceMap.prototype.put = function (item) {\n if (item.action === 'enter' || item.action === 'update') {\n item = presencemessage_1.default.fromValues(item);\n item.action = 'present';\n }\n var map = this.map, key = this.memberKey(item);\n /* we've seen this member, so do not remove it at the end of sync */\n if (this.residualMembers)\n delete this.residualMembers[key];\n /* compare the timestamp of the new item with any existing member (or ABSENT witness) */\n var existingItem = map[key];\n if (existingItem && !newerThan(item, existingItem)) {\n return false;\n }\n map[key] = item;\n return true;\n };\n PresenceMap.prototype.values = function () {\n var map = this.map, result = [];\n for (var key in map) {\n var item = map[key];\n if (item.action != 'absent')\n result.push(item);\n }\n return result;\n };\n PresenceMap.prototype.remove = function (item) {\n var map = this.map, key = this.memberKey(item);\n var existingItem = map[key];\n if (existingItem && !newerThan(item, existingItem)) {\n return false;\n }\n /* RTP2f */\n if (this.syncInProgress) {\n item = presencemessage_1.default.fromValues(item);\n item.action = 'absent';\n map[key] = item;\n }\n else {\n delete map[key];\n }\n return true;\n };\n PresenceMap.prototype.startSync = function () {\n var map = this.map, syncInProgress = this.syncInProgress;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'PresenceMap.startSync()', 'channel = ' + this.presence.channel.name + '; syncInProgress = ' + syncInProgress);\n /* we might be called multiple times while a sync is in progress */\n if (!this.syncInProgress) {\n this.residualMembers = Utils.copy(map);\n this.setInProgress(true);\n }\n };\n PresenceMap.prototype.endSync = function () {\n var map = this.map, syncInProgress = this.syncInProgress;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'PresenceMap.endSync()', 'channel = ' + this.presence.channel.name + '; syncInProgress = ' + syncInProgress);\n if (syncInProgress) {\n /* we can now strip out the ABSENT members, as we have\n * received all of the out-of-order sync messages */\n for (var memberKey in map) {\n var entry = map[memberKey];\n if (entry.action === 'absent') {\n delete map[memberKey];\n }\n }\n /* any members that were present at the start of the sync,\n * and have not been seen in sync, can be removed, and leave events emitted */\n this.presence._synthesizeLeaves(Utils.valuesArray(this.residualMembers));\n for (var memberKey in this.residualMembers) {\n delete map[memberKey];\n }\n this.residualMembers = null;\n /* finish, notifying any waiters */\n this.setInProgress(false);\n }\n this.emit('sync');\n };\n PresenceMap.prototype.waitSync = function (callback) {\n var syncInProgress = this.syncInProgress;\n logger_1.default.logAction(logger_1.default.LOG_MINOR, 'PresenceMap.waitSync()', 'channel = ' + this.presence.channel.name + '; syncInProgress = ' + syncInProgress);\n if (!syncInProgress) {\n callback();\n return;\n }\n this.once('sync', callback);\n };\n PresenceMap.prototype.clear = function () {\n this.map = {};\n this.setInProgress(false);\n this.residualMembers = null;\n };\n PresenceMap.prototype.setInProgress = function (inProgress) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, 'PresenceMap.setInProgress()', 'inProgress = ' + inProgress);\n this.syncInProgress = inProgress;\n this.presence.syncComplete = !inProgress;\n };\n return PresenceMap;\n}(eventemitter_1.default));\nexports.default = RealtimePresence;\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar enc_hex_1 = __webpack_require__(56);\nvar enc_utf8_1 = __webpack_require__(31);\nvar enc_base64_1 = __webpack_require__(11);\nvar lib_typedarrays_1 = tslib_1.__importDefault(__webpack_require__(5));\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nvar BufferUtils = /** @class */ (function () {\n function BufferUtils() {\n this.base64CharSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n this.hexCharSet = '0123456789abcdef';\n }\n BufferUtils.prototype.isWordArray = function (ob) {\n return ob !== null && ob !== undefined && ob.sigBytes !== undefined;\n };\n BufferUtils.prototype.isArrayBuffer = function (ob) {\n return ob !== null && ob !== undefined && ob.constructor === ArrayBuffer;\n };\n BufferUtils.prototype.isTypedArray = function (ob) {\n return !!ArrayBuffer && ArrayBuffer.isView && ArrayBuffer.isView(ob);\n };\n // // https://gist.githubusercontent.com/jonleighton/958841/raw/f200e30dfe95212c0165ccf1ae000ca51e9de803/gistfile1.js\n BufferUtils.prototype.uint8ViewToBase64 = function (bytes) {\n var base64 = '';\n var encodings = this.base64CharSet;\n var byteLength = bytes.byteLength;\n var byteRemainder = byteLength % 3;\n var mainLength = byteLength - byteRemainder;\n var a, b, c, d;\n var chunk;\n // Main loop deals with bytes in chunks of 3\n for (var i = 0; i < mainLength; i = i + 3) {\n // Combine the three bytes into a single integer\n chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n // Use bitmasks to extract 6-bit segments from the triplet\n a = (chunk & 16515072) >> 18; // 16515072 = (2^6 - 1) << 18\n b = (chunk & 258048) >> 12; // 258048 = (2^6 - 1) << 12\n c = (chunk & 4032) >> 6; // 4032 = (2^6 - 1) << 6\n d = chunk & 63; // 63 = 2^6 - 1\n // Convert the raw binary segments to the appropriate ASCII encoding\n base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d];\n }\n // Deal with the remaining bytes and padding\n if (byteRemainder == 1) {\n chunk = bytes[mainLength];\n a = (chunk & 252) >> 2; // 252 = (2^6 - 1) << 2\n // Set the 4 least significant bits to zero\n b = (chunk & 3) << 4; // 3 = 2^2 - 1\n base64 += encodings[a] + encodings[b] + '==';\n }\n else if (byteRemainder == 2) {\n chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1];\n a = (chunk & 64512) >> 10; // 64512 = (2^6 - 1) << 10\n b = (chunk & 1008) >> 4; // 1008 = (2^6 - 1) << 4\n // Set the 2 least significant bits to zero\n c = (chunk & 15) << 2; // 15 = 2^4 - 1\n base64 += encodings[a] + encodings[b] + encodings[c] + '=';\n }\n return base64;\n };\n BufferUtils.prototype.base64ToArrayBuffer = function (base64) {\n var binary_string = atob === null || atob === void 0 ? void 0 : atob(base64); // this will always be defined in browser so it's safe to cast\n var len = binary_string.length;\n var bytes = new Uint8Array(len);\n for (var i = 0; i < len; i++) {\n var ascii = binary_string.charCodeAt(i);\n bytes[i] = ascii;\n }\n return bytes.buffer;\n };\n BufferUtils.prototype.isBuffer = function (buffer) {\n return this.isArrayBuffer(buffer) || this.isWordArray(buffer) || this.isTypedArray(buffer);\n };\n /* In browsers, returns a Uint8Array */\n BufferUtils.prototype.toBuffer = function (buffer) {\n if (!ArrayBuffer) {\n throw new Error(\"Can't convert to Buffer: browser does not support the necessary types\");\n }\n if (this.isArrayBuffer(buffer)) {\n return new Uint8Array(buffer);\n }\n if (this.isTypedArray(buffer)) {\n return new Uint8Array(buffer.buffer);\n }\n if (this.isWordArray(buffer)) {\n /* Backported from unreleased CryptoJS\n * https://code.google.com/p/crypto-js/source/browse/branches/3.x/src/lib-typedarrays.js?r=661 */\n var arrayBuffer = new ArrayBuffer(buffer.sigBytes);\n var uint8View = new Uint8Array(arrayBuffer);\n for (var i = 0; i < buffer.sigBytes; i++) {\n uint8View[i] = (buffer.words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n }\n return uint8View;\n }\n throw new Error('BufferUtils.toBuffer expected an arraybuffer, typed array, or CryptoJS wordarray');\n };\n BufferUtils.prototype.toArrayBuffer = function (buffer) {\n if (this.isArrayBuffer(buffer)) {\n return buffer;\n }\n return this.toBuffer(buffer).buffer;\n };\n BufferUtils.prototype.toWordArray = function (buffer) {\n if (this.isTypedArray(buffer)) {\n buffer = buffer.buffer;\n }\n return this.isWordArray(buffer) ? buffer : lib_typedarrays_1.default.create(buffer);\n };\n BufferUtils.prototype.base64Encode = function (buffer) {\n if (this.isWordArray(buffer)) {\n return (0, enc_base64_1.stringify)(buffer);\n }\n return this.uint8ViewToBase64(this.toBuffer(buffer));\n };\n BufferUtils.prototype.base64Decode = function (str) {\n if (ArrayBuffer && platform_1.default.Config.atob) {\n return this.base64ToArrayBuffer(str);\n }\n return (0, enc_base64_1.parse)(str);\n };\n BufferUtils.prototype.hexEncode = function (buffer) {\n return (0, enc_hex_1.stringify)(this.toWordArray(buffer));\n };\n BufferUtils.prototype.hexDecode = function (string) {\n var wordArray = (0, enc_hex_1.parse)(string);\n return ArrayBuffer ? this.toArrayBuffer(wordArray) : wordArray;\n };\n BufferUtils.prototype.utf8Encode = function (string) {\n if (platform_1.default.Config.TextEncoder) {\n return new platform_1.default.Config.TextEncoder().encode(string).buffer;\n }\n return (0, enc_utf8_1.parse)(string);\n };\n /* For utf8 decoding we apply slightly stricter input validation than to\n * hexEncode/base64Encode/etc: in those we accept anything that Buffer.from\n * can take (in particular allowing strings, which are just interpreted as\n * binary); here we ensure that the input is actually a buffer since trying\n * to utf8-decode a string to another string is almost certainly a mistake */\n BufferUtils.prototype.utf8Decode = function (buffer) {\n if (!this.isBuffer(buffer)) {\n throw new Error('Expected input of utf8decode to be an arraybuffer, typed array, or CryptoJS wordarray');\n }\n if (TextDecoder && !this.isWordArray(buffer)) {\n return new TextDecoder().decode(buffer);\n }\n buffer = this.toWordArray(buffer);\n return (0, enc_utf8_1.stringify)(buffer);\n };\n BufferUtils.prototype.bufferCompare = function (buffer1, buffer2) {\n if (!buffer1)\n return -1;\n if (!buffer2)\n return 1;\n var wordArray1 = this.toWordArray(buffer1);\n var wordArray2 = this.toWordArray(buffer2);\n wordArray1.clamp();\n wordArray2.clamp();\n var cmp = wordArray1.sigBytes - wordArray2.sigBytes;\n if (cmp != 0)\n return cmp;\n var words1 = wordArray1.words;\n var words2 = wordArray2.words;\n for (var i = 0; i < words1.length; i++) {\n cmp = words1[i] - words2[i];\n if (cmp != 0)\n return cmp;\n }\n return 0;\n };\n BufferUtils.prototype.byteLength = function (buffer) {\n if (this.isArrayBuffer(buffer) || this.isTypedArray(buffer)) {\n return buffer.byteLength;\n }\n else if (this.isWordArray(buffer)) {\n return buffer.sigBytes;\n }\n return -1;\n };\n /* Returns ArrayBuffer on browser and Buffer on Node.js */\n BufferUtils.prototype.typedArrayToBuffer = function (typedArray) {\n return typedArray.buffer;\n };\n return BufferUtils;\n}());\nexports.default = new BufferUtils();\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n;(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(6));\n\t}\n\telse {}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS.enc.Hex;\n\n}));\n\n/***/ }),\n/* 57 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);\n/* harmony import */ var crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var crypto_js_build_enc_base64__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11);\n/* harmony import */ var crypto_js_build_enc_base64__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(crypto_js_build_enc_base64__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var crypto_js_build__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);\n/* harmony import */ var crypto_js_build__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(crypto_js_build__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _common_lib_util_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2);\n/* harmony import */ var _common_lib_util_logger__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_common_lib_util_logger__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var common_lib_types_errorinfo__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4);\n/* harmony import */ var common_lib_types_errorinfo__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(common_lib_types_errorinfo__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\nvar CryptoFactory = function (config, bufferUtils) {\n var DEFAULT_ALGORITHM = 'aes';\n var DEFAULT_KEYLENGTH = 256; // bits\n var DEFAULT_MODE = 'cbc';\n var DEFAULT_BLOCKLENGTH = 16; // bytes\n var DEFAULT_BLOCKLENGTH_WORDS = 4; // 32-bit words\n var UINT32_SUP = 0x100000000;\n var INT32_SUP = 0x80000000;\n\n /**\n * Internal: generate an array of secure random words corresponding to the given length of bytes\n * @param bytes\n * @param callback\n */\n var generateRandom;\n if (config.getRandomWordArray) {\n generateRandom = config.getRandomWordArray;\n } else if (typeof Uint32Array !== 'undefined' && config.getRandomValues) {\n var blockRandomArray = new Uint32Array(DEFAULT_BLOCKLENGTH_WORDS);\n generateRandom = function (bytes, callback) {\n var words = bytes / 4,\n nativeArray = words == DEFAULT_BLOCKLENGTH_WORDS ? blockRandomArray : new Uint32Array(words);\n config.getRandomValues(nativeArray, function (err) {\n if (typeof callback !== 'undefined') {\n callback(err, bufferUtils.toWordArray(nativeArray));\n }\n });\n };\n } else {\n generateRandom = function (bytes, callback) {\n _common_lib_util_logger__WEBPACK_IMPORTED_MODULE_3___default.a.logAction(\n _common_lib_util_logger__WEBPACK_IMPORTED_MODULE_3___default.a.LOG_MAJOR,\n 'Ably.Crypto.generateRandom()',\n 'Warning: the browser you are using does not support secure cryptographically secure randomness generation; falling back to insecure Math.random()'\n );\n var words = bytes / 4,\n array = new Array(words);\n for (var i = 0; i < words; i++) {\n /* cryptojs wordarrays use signed ints. When WordArray.create is fed a\n * Uint32Array unsigned are converted to signed automatically, but when\n * fed a normal array they aren't, so need to do so ourselves by\n * subtracting INT32_SUP */\n array[i] = Math.floor(Math.random() * UINT32_SUP) - INT32_SUP;\n }\n\n callback(null, crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create(array));\n };\n }\n\n /**\n * Internal: calculate the padded length of a given plaintext\n * using PKCS5.\n * @param plaintextLength\n * @return\n */\n function getPaddedLength(plaintextLength) {\n return (plaintextLength + DEFAULT_BLOCKLENGTH) & -DEFAULT_BLOCKLENGTH;\n }\n\n /**\n * Internal: checks that the cipherParams are a valid combination. Currently\n * just checks that the calculated keyLength is a valid one for aes-cbc\n */\n function validateCipherParams(params) {\n if (params.algorithm === 'aes' && params.mode === 'cbc') {\n if (params.keyLength === 128 || params.keyLength === 256) {\n return;\n }\n throw new Error(\n 'Unsupported key length ' +\n params.keyLength +\n ' for aes-cbc encryption. Encryption key must be 128 or 256 bits (16 or 32 ASCII characters)'\n );\n }\n }\n\n function normaliseBase64(string) {\n /* url-safe base64 strings use _ and - instread of / and + */\n return string.replace('_', '/').replace('-', '+');\n }\n\n /**\n * Internal: obtain the pkcs5 padding string for a given padded length;\n */\n var pkcs5Padding = [\n crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create([0x10101010, 0x10101010, 0x10101010, 0x10101010], 16),\n crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create([0x01000000], 1),\n crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create([0x02020000], 2),\n crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create([0x03030300], 3),\n crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create([0x04040404], 4),\n crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create([0x05050505, 0x05000000], 5),\n crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create([0x06060606, 0x06060000], 6),\n crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create([0x07070707, 0x07070700], 7),\n crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create([0x08080808, 0x08080808], 8),\n crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create([0x09090909, 0x09090909, 0x09000000], 9),\n crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create([0x0a0a0a0a, 0x0a0a0a0a, 0x0a0a0000], 10),\n crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create([0x0b0b0b0b, 0x0b0b0b0b, 0x0b0b0b00], 11),\n crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create([0x0c0c0c0c, 0x0c0c0c0c, 0x0c0c0c0c], 12),\n crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create([0x0d0d0d0d, 0x0d0d0d0d, 0x0d0d0d0d, 0x0d000000], 13),\n crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create([0x0e0e0e0e, 0x0e0e0e0e, 0x0e0e0e0e, 0x0e0e0000], 14),\n crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create([0x0f0f0f0f, 0x0f0f0f0f, 0x0f0f0f0f, 0x0f0f0f0f], 15),\n crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create([0x10101010, 0x10101010, 0x10101010, 0x10101010], 16),\n ];\n\n /**\n * Utility classes and interfaces for message payload encryption.\n *\n * This class supports AES/CBC/PKCS5 with a default keylength of 128 bits\n * but supporting other keylengths. Other algorithms and chaining modes are\n * not supported directly, but supportable by extending/implementing the base\n * classes and interfaces here.\n *-\n * Secure random data for creation of Initialization Vectors (IVs) and keys\n * is obtained from window.crypto.getRandomValues if available, or from\n * Math.random() if not. Clients who do not want to depend on Math.random()\n * should polyfill window.crypto.getRandomValues with a library that seeds\n * a PRNG with real entropy.\n *\n * Each message payload is encrypted with an IV in CBC mode, and the IV is\n * concatenated with the resulting raw ciphertext to construct the \"ciphertext\"\n * data passed to the recipient.\n */\n function Crypto() {}\n\n /**\n * A class encapsulating the client-specifiable parameters for\n * the cipher.\n *\n * algorithm is the name of the algorithm in the default system provider,\n * or the lower-cased version of it; eg \"aes\" or \"AES\".\n *\n * Clients are recommended to not call this directly, but instead to use the\n * Crypto.getDefaultParams helper, which will fill in any fields not supplied\n * with default values and validation the result.\n */\n function CipherParams() {\n this.algorithm = null;\n this.keyLength = null;\n this.mode = null;\n this.key = null;\n }\n Crypto.CipherParams = CipherParams;\n\n /**\n * Obtain a complete CipherParams instance from the provided params, filling\n * in any not provided with default values, calculating a keyLength from\n * the supplied key, and validating the result.\n * @param params an object containing at a minimum a `key` key with value the\n * key, as either a binary (ArrayBuffer, Array, WordArray) or a\n * base64-encoded string. May optionally also contain: algorithm (defaults to\n * AES), mode (defaults to 'cbc')\n */\n Crypto.getDefaultParams = function (params) {\n var key;\n /* Backward compatibility */\n if (typeof params === 'function' || typeof params === 'string') {\n _common_lib_util_logger__WEBPACK_IMPORTED_MODULE_3___default.a.deprecated(\n 'The ability to pass a callback to `Crypto.getDefaultParams()`',\n 'This method now directly returns its result, instead of returning it asynchronously via a callback. Please update your code so that it uses the return value of this method instead of passing a callback.'\n );\n\n if (typeof params === 'function') {\n // Called with (callback)\n _common_lib_util_logger__WEBPACK_IMPORTED_MODULE_3___default.a.deprecated(\n 'The ability to call `Crypto.getDefaultParams()` without specifying an encryption key',\n 'Please update your code so that it instead passes an object whose `key` property contains an encryption key. That is, replace `Crypto.getDefaultParams()` with `Crypto.getDefaultParams({ key })`, where `key` is an encryption key that you have generated (for example from the `Crypto.generateRandomKey()` method).'\n );\n Crypto.generateRandomKey(function (key) {\n params(null, Crypto.getDefaultParams({ key: key }));\n });\n } else if (typeof arguments[1] === 'function') {\n // Called with (key, callback)\n _common_lib_util_logger__WEBPACK_IMPORTED_MODULE_3___default.a.deprecated(\n 'The ability to pass the encryption key as the first argument of `Crypto.getDefaultParams()`',\n 'Please update your code so that it instead passes an object whose `key` property contains the key. That is, replace `Crypto.getDefaultParams(key)` with `Crypto.getDefaultParams({ key })`.'\n );\n arguments[1](null, Crypto.getDefaultParams({ key: params }));\n } else {\n throw new Error('Invalid arguments for Crypto.getDefaultParams');\n }\n return;\n }\n\n if (!params.key) {\n throw new Error('Crypto.getDefaultParams: a key is required');\n }\n\n if (typeof params.key === 'string') {\n key = Object(crypto_js_build_enc_base64__WEBPACK_IMPORTED_MODULE_1__[\"parse\"])(normaliseBase64(params.key));\n } else {\n key = bufferUtils.toWordArray(params.key); // Expect key to be an Array, ArrayBuffer, or WordArray at this point\n }\n\n var cipherParams = new CipherParams();\n cipherParams.key = key;\n cipherParams.algorithm = params.algorithm || DEFAULT_ALGORITHM;\n cipherParams.keyLength = key.words.length * (4 * 8);\n cipherParams.mode = params.mode || DEFAULT_MODE;\n\n if (params.keyLength && params.keyLength !== cipherParams.keyLength) {\n throw new Error(\n 'Crypto.getDefaultParams: a keyLength of ' +\n params.keyLength +\n ' was specified, but the key actually has length ' +\n cipherParams.keyLength\n );\n }\n\n validateCipherParams(cipherParams);\n return cipherParams;\n };\n\n /**\n * Generate a random encryption key from the supplied keylength (or the\n * default keyLength if none supplied) as a CryptoJS WordArray\n * @param keyLength (optional) the required keyLength in bits\n * @param callback (optional) (err, key)\n */\n Crypto.generateRandomKey = function (keyLength, callback) {\n if (arguments.length == 1 && typeof keyLength == 'function') {\n callback = keyLength;\n keyLength = undefined;\n }\n\n generateRandom((keyLength || DEFAULT_KEYLENGTH) / 8, function (err, buf) {\n if (callback !== undefined) {\n callback(err ? common_lib_types_errorinfo__WEBPACK_IMPORTED_MODULE_4___default.a.fromValues(err) : null, buf);\n }\n });\n };\n\n /**\n * Internal; get a ChannelCipher instance based on the given cipherParams\n * @param params either a CipherParams instance or some subset of its\n * fields that includes a key\n */\n Crypto.getCipher = function (params) {\n var cipherParams = params instanceof CipherParams ? params : Crypto.getDefaultParams(params);\n\n return { cipherParams: cipherParams, cipher: new CBCCipher(cipherParams, DEFAULT_BLOCKLENGTH_WORDS, params.iv) };\n };\n\n function CBCCipher(params, blockLengthWords, iv) {\n this.algorithm = params.algorithm + '-' + String(params.keyLength) + '-' + params.mode;\n this.cjsAlgorithm = params.algorithm.toUpperCase().replace(/-\\d+$/, '');\n this.key = bufferUtils.toWordArray(params.key);\n if (iv) {\n this.iv = bufferUtils.toWordArray(iv).clone();\n }\n this.blockLengthWords = blockLengthWords;\n }\n\n CBCCipher.prototype.encrypt = function (plaintext, callback) {\n _common_lib_util_logger__WEBPACK_IMPORTED_MODULE_3___default.a.logAction(_common_lib_util_logger__WEBPACK_IMPORTED_MODULE_3___default.a.LOG_MICRO, 'CBCCipher.encrypt()', '');\n plaintext = bufferUtils.toWordArray(plaintext);\n var plaintextLength = plaintext.sigBytes,\n paddedLength = getPaddedLength(plaintextLength),\n self = this;\n\n var then = function () {\n self.getIv(function (err, iv) {\n if (err) {\n callback(err);\n return;\n }\n var cipherOut = self.encryptCipher.process(plaintext.concat(pkcs5Padding[paddedLength - plaintextLength]));\n var ciphertext = iv.concat(cipherOut);\n callback(null, ciphertext);\n });\n };\n\n if (!this.encryptCipher) {\n if (this.iv) {\n this.encryptCipher = crypto_js_build__WEBPACK_IMPORTED_MODULE_2___default.a.algo[this.cjsAlgorithm].createEncryptor(this.key, { iv: this.iv });\n then();\n } else {\n generateRandom(DEFAULT_BLOCKLENGTH, function (err, iv) {\n if (err) {\n callback(err);\n return;\n }\n self.encryptCipher = crypto_js_build__WEBPACK_IMPORTED_MODULE_2___default.a.algo[self.cjsAlgorithm].createEncryptor(self.key, { iv: iv });\n self.iv = iv;\n then();\n });\n }\n } else {\n then();\n }\n };\n\n CBCCipher.prototype.decrypt = function (ciphertext) {\n _common_lib_util_logger__WEBPACK_IMPORTED_MODULE_3___default.a.logAction(_common_lib_util_logger__WEBPACK_IMPORTED_MODULE_3___default.a.LOG_MICRO, 'CBCCipher.decrypt()', '');\n ciphertext = bufferUtils.toWordArray(ciphertext);\n var blockLengthWords = this.blockLengthWords,\n ciphertextWords = ciphertext.words,\n iv = crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create(ciphertextWords.slice(0, blockLengthWords)),\n ciphertextBody = crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default.a.create(ciphertextWords.slice(blockLengthWords));\n\n var decryptCipher = crypto_js_build__WEBPACK_IMPORTED_MODULE_2___default.a.algo[this.cjsAlgorithm].createDecryptor(this.key, { iv: iv });\n var plaintext = decryptCipher.process(ciphertextBody);\n var epilogue = decryptCipher.finalize();\n decryptCipher.reset();\n if (epilogue && epilogue.sigBytes) plaintext.concat(epilogue);\n return plaintext;\n };\n\n CBCCipher.prototype.getIv = function (callback) {\n if (this.iv) {\n var iv = this.iv;\n this.iv = null;\n callback(null, iv);\n return;\n }\n\n /* Since the iv for a new block is the ciphertext of the last, this\n * sets a new iv (= aes(randomBlock XOR lastCipherText)) as well as\n * returning it */\n var self = this;\n generateRandom(DEFAULT_BLOCKLENGTH, function (err, randomBlock) {\n if (err) {\n callback(err);\n return;\n }\n callback(null, self.encryptCipher.process(randomBlock));\n });\n };\n\n return Crypto;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (CryptoFactory);\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n;(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(6));\n\t}\n\telse {}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n;(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(6), __webpack_require__(28));\n\t}\n\telse {}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n;(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(6), __webpack_require__(11), __webpack_require__(61), __webpack_require__(27), __webpack_require__(28));\n\t}\n\telse {}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n;(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(6));\n\t}\n\telse {}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar defaults_1 = tslib_1.__importDefault(__webpack_require__(8));\nvar errorinfo_1 = __webpack_require__(4);\nvar HttpMethods_1 = tslib_1.__importDefault(__webpack_require__(19));\nvar xhrrequest_1 = tslib_1.__importDefault(__webpack_require__(17));\nvar XHRStates_1 = tslib_1.__importDefault(__webpack_require__(22));\nvar logger_1 = tslib_1.__importDefault(__webpack_require__(2));\nvar jsonptransport_1 = __webpack_require__(29);\nvar fetchrequest_1 = tslib_1.__importDefault(__webpack_require__(63));\nvar HttpStatusCodes_1 = __webpack_require__(14);\nfunction shouldFallback(errorInfo) {\n var statusCode = errorInfo.statusCode;\n /* 400 + no code = a generic xhr onerror. Browser doesn't give us enough\n * detail to know whether it's fallback-fixable, but it may be (eg if a\n * network issue), so try just in case */\n return ((statusCode === 408 && !errorInfo.code) ||\n (statusCode === 400 && !errorInfo.code) ||\n (statusCode >= 500 && statusCode <= 504));\n}\nfunction getHosts(client) {\n /* If we're a connected realtime client, try the endpoint we're connected\n * to first -- but still have fallbacks, being connected is not an absolute\n * guarantee that a datacenter has free capacity to service REST requests. */\n var connection = client.connection, connectionHost = connection && connection.connectionManager.host;\n if (connectionHost) {\n return [connectionHost].concat(defaults_1.default.getFallbackHosts(client.options));\n }\n return defaults_1.default.getHosts(client.options);\n}\nvar Http = (_a = /** @class */ (function () {\n function class_1(options) {\n this.checksInProgress = null;\n this.checkConnectivity = undefined;\n this.supportsAuthHeaders = false;\n this.supportsLinkHeaders = false;\n this._getHosts = getHosts;\n this.options = options || {};\n var connectivityCheckUrl = this.options.connectivityCheckUrl || defaults_1.default.connectivityCheckUrl;\n var connectivityCheckParams = this.options.connectivityCheckParams;\n var connectivityUrlIsDefault = !this.options.connectivityCheckUrl;\n if (platform_1.default.Config.xhrSupported) {\n this.supportsAuthHeaders = true;\n this.Request = function (method, rest, uri, headers, params, body, callback) {\n var req = xhrrequest_1.default.createRequest(uri, headers, params, body, XHRStates_1.default.REQ_SEND, rest && rest.options.timeouts, method);\n req.once('complete', callback);\n req.exec();\n return req;\n };\n if (this.options.disableConnectivityCheck) {\n this.checkConnectivity = function (callback) {\n callback(null, true);\n };\n }\n else {\n this.checkConnectivity = function (callback) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, '(XHRRequest)Http.checkConnectivity()', 'Sending; ' + connectivityCheckUrl);\n this.doUri(HttpMethods_1.default.Get, null, connectivityCheckUrl, null, null, connectivityCheckParams, function (err, responseText, headers, unpacked, statusCode) {\n var result = false;\n if (!connectivityUrlIsDefault) {\n result = !err && (0, HttpStatusCodes_1.isSuccessCode)(statusCode);\n }\n else {\n result = !err && (responseText === null || responseText === void 0 ? void 0 : responseText.replace(/\\n/, '')) == 'yes';\n }\n logger_1.default.logAction(logger_1.default.LOG_MICRO, '(XHRRequest)Http.checkConnectivity()', 'Result: ' + result);\n callback(null, result);\n });\n };\n }\n }\n else if (platform_1.default.Config.jsonpSupported) {\n this.Request = function (method, rest, uri, headers, params, body, callback) {\n var req = (0, jsonptransport_1.createRequest)(uri, headers, params, body, XHRStates_1.default.REQ_SEND, rest && rest.options.timeouts, method);\n req.once('complete', callback);\n platform_1.default.Config.nextTick(function () {\n req.exec();\n });\n return req;\n };\n if (this.options.disableConnectivityCheck) {\n this.checkConnectivity = function (callback) {\n callback(null, true);\n };\n }\n else {\n this.checkConnectivity = function (callback) {\n var _this = this;\n var upUrl = defaults_1.default.jsonpInternetUpUrl;\n if (this.checksInProgress) {\n this.checksInProgress.push(callback);\n return;\n }\n this.checksInProgress = [callback];\n logger_1.default.logAction(logger_1.default.LOG_MICRO, '(JSONP)Http.checkConnectivity()', 'Sending; ' + upUrl);\n var req = new jsonptransport_1.Request('isTheInternetUp', upUrl, null, null, null, XHRStates_1.default.REQ_SEND, defaults_1.default.TIMEOUTS);\n req.once('complete', function (err, response) {\n var result = !err && response;\n logger_1.default.logAction(logger_1.default.LOG_MICRO, '(JSONP)Http.checkConnectivity()', 'Result: ' + result);\n for (var i = 0; i < _this.checksInProgress.length; i++)\n _this.checksInProgress[i](null, result);\n _this.checksInProgress = null;\n });\n platform_1.default.Config.nextTick(function () {\n req.exec();\n });\n };\n }\n }\n else if (platform_1.default.Config.fetchSupported) {\n this.supportsAuthHeaders = true;\n this.Request = fetchrequest_1.default;\n this.checkConnectivity = function (callback) {\n logger_1.default.logAction(logger_1.default.LOG_MICRO, '(Fetch)Http.checkConnectivity()', 'Sending; ' + connectivityCheckUrl);\n this.doUri(HttpMethods_1.default.Get, null, connectivityCheckUrl, null, null, null, function (err, responseText) {\n var result = !err && (responseText === null || responseText === void 0 ? void 0 : responseText.replace(/\\n/, '')) == 'yes';\n logger_1.default.logAction(logger_1.default.LOG_MICRO, '(Fetch)Http.checkConnectivity()', 'Result: ' + result);\n callback(null, result);\n });\n };\n }\n else {\n this.Request = function (method, rest, uri, headers, params, body, callback) {\n callback(new errorinfo_1.PartialErrorInfo('no supported HTTP transports available', null, 400), null);\n };\n }\n }\n /* Unlike for doUri, the 'rest' param here is mandatory, as it's used to generate the hosts */\n class_1.prototype.do = function (method, rest, path, headers, body, params, callback) {\n var _this = this;\n var uriFromHost = typeof path == 'function'\n ? path\n : function (host) {\n return rest.baseUri(host) + path;\n };\n var currentFallback = rest._currentFallback;\n if (currentFallback) {\n if (currentFallback.validUntil > Utils.now()) {\n /* Use stored fallback */\n if (!this.Request) {\n callback === null || callback === void 0 ? void 0 : callback(new errorinfo_1.PartialErrorInfo('Request invoked before assigned to', null, 500));\n return;\n }\n this.Request(method, rest, uriFromHost(currentFallback.host), headers, params, body, function (err) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n // This typecast is safe because ErrnoExceptions are only thrown in NodeJS\n if (err && shouldFallback(err)) {\n /* unstore the fallback and start from the top with the default sequence */\n rest._currentFallback = null;\n _this.do(method, rest, path, headers, body, params, callback);\n return;\n }\n callback === null || callback === void 0 ? void 0 : callback.apply(void 0, tslib_1.__spreadArray([err], args, false));\n });\n return;\n }\n else {\n /* Fallback expired; remove it and fallthrough to normal sequence */\n rest._currentFallback = null;\n }\n }\n var hosts = getHosts(rest);\n /* if there is only one host do it */\n if (hosts.length === 1) {\n this.doUri(method, rest, uriFromHost(hosts[0]), headers, body, params, callback);\n return;\n }\n /* hosts is an array with preferred host plus at least one fallback */\n var tryAHost = function (candidateHosts, persistOnSuccess) {\n var host = candidateHosts.shift();\n _this.doUri(method, rest, uriFromHost(host), headers, body, params, function (err) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n // This typecast is safe because ErrnoExceptions are only thrown in NodeJS\n if (err && shouldFallback(err) && candidateHosts.length) {\n tryAHost(candidateHosts, true);\n return;\n }\n if (persistOnSuccess) {\n /* RSC15f */\n rest._currentFallback = {\n host: host,\n validUntil: Utils.now() + rest.options.timeouts.fallbackRetryTimeout,\n };\n }\n callback === null || callback === void 0 ? void 0 : callback.apply(void 0, tslib_1.__spreadArray([err], args, false));\n });\n };\n tryAHost(hosts);\n };\n class_1.prototype.doUri = function (method, rest, uri, headers, body, params, callback) {\n if (!this.Request) {\n callback(new errorinfo_1.PartialErrorInfo('Request invoked before assigned to', null, 500));\n return;\n }\n this.Request(method, rest, uri, headers, params, body, callback);\n };\n return class_1;\n }()),\n _a.methods = [HttpMethods_1.default.Get, HttpMethods_1.default.Delete, HttpMethods_1.default.Post, HttpMethods_1.default.Put, HttpMethods_1.default.Patch],\n _a.methodsWithoutBody = [HttpMethods_1.default.Get, HttpMethods_1.default.Delete],\n _a.methodsWithBody = [HttpMethods_1.default.Post, HttpMethods_1.default.Put, HttpMethods_1.default.Patch],\n _a);\nexports.default = Http;\n\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar errorinfo_1 = tslib_1.__importStar(__webpack_require__(4));\nvar platform_1 = tslib_1.__importDefault(__webpack_require__(3));\nvar defaults_1 = tslib_1.__importDefault(__webpack_require__(8));\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar utils_1 = __webpack_require__(1);\nfunction isAblyError(responseBody, headers) {\n return !!headers.get('x-ably-errorcode');\n}\nfunction getAblyError(responseBody, headers) {\n if (isAblyError(responseBody, headers)) {\n return responseBody.error && errorinfo_1.default.fromValues(responseBody.error);\n }\n}\nfunction fetchRequest(method, rest, uri, headers, params, body, callback) {\n var fetchHeaders = new Headers(headers || {});\n var _method = method ? method.toUpperCase() : Utils.isEmptyArg(body) ? 'GET' : 'POST';\n var controller = new AbortController();\n var timeout = setTimeout(function () {\n controller.abort();\n callback(new errorinfo_1.PartialErrorInfo('Request timed out', null, 408));\n }, rest ? rest.options.timeouts.httpRequestTimeout : defaults_1.default.TIMEOUTS.httpRequestTimeout);\n var requestInit = {\n method: _method,\n headers: fetchHeaders,\n body: body,\n };\n if (!platform_1.default.Config.isWebworker) {\n requestInit.credentials = fetchHeaders.has('authorization') ? 'include' : 'same-origin';\n }\n (0, utils_1.getGlobalObject)()\n .fetch(uri + '?' + new URLSearchParams(params || {}), requestInit)\n .then(function (res) {\n clearTimeout(timeout);\n var contentType = res.headers.get('Content-Type');\n var prom;\n if (contentType && contentType.indexOf('application/x-msgpack') > -1) {\n prom = res.arrayBuffer();\n }\n else if (contentType && contentType.indexOf('application/json') > -1) {\n prom = res.json();\n }\n else {\n prom = res.text();\n }\n prom.then(function (body) {\n var unpacked = !!contentType && contentType.indexOf('application/x-msgpack') === -1;\n if (!res.ok) {\n var err = getAblyError(body, res.headers) ||\n new errorinfo_1.PartialErrorInfo('Error response received from server: ' + res.status + ' body was: ' + platform_1.default.Config.inspect(body), null, res.status);\n callback(err, body, res.headers, unpacked, res.status);\n }\n else {\n callback(null, body, res.headers, unpacked, res.status);\n }\n });\n })\n .catch(function (err) {\n clearTimeout(timeout);\n callback(err);\n });\n}\nexports.default = fetchRequest;\n\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar msgpack_1 = tslib_1.__importDefault(__webpack_require__(41));\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\n// Workaround for salesforce lightning locker compat\nvar globalObject = Utils.getGlobalObject();\nif (typeof Window === 'undefined' && typeof WorkerGlobalScope === 'undefined') {\n console.log(\"Warning: this distribution of Ably is intended for browsers. On nodejs, please use the 'ably' package on npm\");\n}\nfunction allowComet() {\n /* xhr requests from local files are unreliable in some browsers, such as Chrome 65 and higher -- see eg\n * https://stackoverflow.com/questions/49256429/chrome-65-unable-to-make-post-requests-from-local-files-to-flask\n * So if websockets are supported, then just forget about comet transports and use that */\n var loc = globalObject.location;\n return !globalObject.WebSocket || !loc || !loc.origin || loc.origin.indexOf('http') > -1;\n}\nvar userAgent = globalObject.navigator && globalObject.navigator.userAgent.toString();\nvar currentUrl = globalObject.location && globalObject.location.href;\nvar Config = {\n agent: 'browser',\n logTimestamps: true,\n userAgent: userAgent,\n currentUrl: currentUrl,\n noUpgrade: userAgent && !!userAgent.match(/MSIE\\s8\\.0/),\n binaryType: 'arraybuffer',\n WebSocket: globalObject.WebSocket,\n fetchSupported: !!globalObject.fetch,\n xhrSupported: globalObject.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest(),\n jsonpSupported: typeof document !== 'undefined',\n allowComet: allowComet(),\n streamingSupported: true,\n useProtocolHeartbeats: true,\n createHmac: null,\n msgpack: msgpack_1.default,\n supportsBinary: !!globalObject.TextDecoder,\n /* Per Paddy (https://ably-real-time.slack.com/archives/CURL4U2FP/p1705674537763479) web intentionally prefers JSON to MessagePack:\n *\n * > browsers' support for binary types in general was historically poor, and JSON transport performance is significantly better in a browser than msgpack. In modern browsers then binary is supported consistently, but I'd still expect that JSON encode/decode performance is dramatically better than msgpack in a browser.\n */\n preferBinary: false,\n ArrayBuffer: globalObject.ArrayBuffer,\n atob: globalObject.atob,\n nextTick: typeof globalObject.setImmediate !== 'undefined'\n ? globalObject.setImmediate.bind(globalObject)\n : function (f) {\n setTimeout(f, 0);\n },\n addEventListener: globalObject.addEventListener,\n inspect: JSON.stringify,\n stringByteSize: function (str) {\n /* str.length will be an underestimate for non-ascii strings. But if we're\n * in a browser too old to support TextDecoder, not much we can do. Better\n * to underestimate, so if we do go over-size, the server will reject the\n * message */\n return (globalObject.TextDecoder && new globalObject.TextEncoder().encode(str).length) || str.length;\n },\n TextEncoder: globalObject.TextEncoder,\n TextDecoder: globalObject.TextDecoder,\n Promise: globalObject.Promise,\n getRandomValues: (function (crypto) {\n if (crypto === undefined) {\n return undefined;\n }\n return function (arr, callback) {\n crypto.getRandomValues(arr);\n if (callback) {\n callback(null);\n }\n };\n })(globalObject.crypto || msCrypto),\n};\nexports.default = Config;\n\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar Utils = tslib_1.__importStar(__webpack_require__(1));\nvar test = 'ablyjs-storage-test';\nvar Webstorage = /** @class */ (function () {\n function Webstorage() {\n /* Even just accessing the session/localStorage object can throw a\n * security exception in some circumstances with some browsers. In\n * others, calling setItem will throw. So have to check in this\n * somewhat roundabout way. (If unsupported or no global object,\n * will throw on accessing a property of undefined) */\n try {\n global.sessionStorage.setItem(test, test);\n global.sessionStorage.removeItem(test);\n this.sessionSupported = true;\n }\n catch (e) {\n this.sessionSupported = false;\n }\n try {\n global.localStorage.setItem(test, test);\n global.localStorage.removeItem(test);\n this.localSupported = true;\n }\n catch (e) {\n this.localSupported = false;\n }\n }\n Webstorage.prototype.get = function (name) {\n return this._get(name, false);\n };\n Webstorage.prototype.getSession = function (name) {\n return this._get(name, true);\n };\n Webstorage.prototype.remove = function (name) {\n return this._remove(name, false);\n };\n Webstorage.prototype.removeSession = function (name) {\n return this._remove(name, true);\n };\n Webstorage.prototype.set = function (name, value, ttl) {\n return this._set(name, value, ttl, false);\n };\n Webstorage.prototype.setSession = function (name, value, ttl) {\n return this._set(name, value, ttl, true);\n };\n Webstorage.prototype._set = function (name, value, ttl, session) {\n var wrappedValue = { value: value };\n if (ttl) {\n wrappedValue.expires = Utils.now() + ttl;\n }\n return this.storageInterface(session).setItem(name, JSON.stringify(wrappedValue));\n };\n Webstorage.prototype._get = function (name, session) {\n if (session && !this.sessionSupported)\n throw new Error('Session Storage not supported');\n if (!session && !this.localSupported)\n throw new Error('Local Storage not supported');\n var rawItem = this.storageInterface(session).getItem(name);\n if (!rawItem)\n return null;\n var wrappedValue = JSON.parse(rawItem);\n if (wrappedValue.expires && wrappedValue.expires < Utils.now()) {\n this.storageInterface(session).removeItem(name);\n return null;\n }\n return wrappedValue.value;\n };\n Webstorage.prototype._remove = function (name, session) {\n return this.storageInterface(session).removeItem(name);\n };\n Webstorage.prototype.storageInterface = function (session) {\n return session ? global.sessionStorage : global.localStorage;\n };\n return Webstorage;\n}());\nexports.default = new Webstorage();\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(13)))\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = __webpack_require__(0);\nvar TransportNames_1 = tslib_1.__importDefault(__webpack_require__(67));\nvar Defaults = {\n connectivityCheckUrl: 'https://internet-up.ably-realtime.com/is-the-internet-up.txt',\n jsonpInternetUpUrl: 'https://internet-up.ably-realtime.com/is-the-internet-up-0-9.js',\n /* Order matters here: the base transport is the leftmost one in the\n * intersection of baseTransportOrder and the transports clientOption that's\n * supported. This is not quite the same as the preference order -- e.g.\n * xhr_polling is preferred to jsonp, but for browsers that support it we want\n * the base transport to be xhr_polling, not jsonp */\n defaultTransports: [\n TransportNames_1.default.XhrPolling,\n TransportNames_1.default.XhrStreaming,\n TransportNames_1.default.JsonP,\n TransportNames_1.default.WebSocket,\n ],\n baseTransportOrder: [\n TransportNames_1.default.XhrPolling,\n TransportNames_1.default.XhrStreaming,\n TransportNames_1.default.JsonP,\n TransportNames_1.default.WebSocket,\n ],\n transportPreferenceOrder: [\n TransportNames_1.default.JsonP,\n TransportNames_1.default.XhrPolling,\n TransportNames_1.default.XhrStreaming,\n TransportNames_1.default.WebSocket,\n ],\n upgradeTransports: [TransportNames_1.default.XhrStreaming, TransportNames_1.default.WebSocket],\n};\nexports.default = Defaults;\n\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar TransportNames;\n(function (TransportNames) {\n TransportNames[\"WebSocket\"] = \"web_socket\";\n TransportNames[\"Comet\"] = \"comet\";\n TransportNames[\"XhrStreaming\"] = \"xhr_streaming\";\n TransportNames[\"XhrPolling\"] = \"xhr_polling\";\n TransportNames[\"JsonP\"] = \"jsonp\";\n})(TransportNames || (TransportNames = {}));\nexports.default = TransportNames;\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: ./src/platform/web/lib/transport/jsonptransport.ts\nvar jsonptransport = __webpack_require__(29);\nvar jsonptransport_default = /*#__PURE__*/__webpack_require__.n(jsonptransport);\n\n// EXTERNAL MODULE: ./src/common/lib/util/utils.ts\nvar utils = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./src/common/platform.ts\nvar platform = __webpack_require__(3);\nvar platform_default = /*#__PURE__*/__webpack_require__.n(platform);\n\n// EXTERNAL MODULE: ./src/common/lib/transport/comettransport.ts\nvar comettransport = __webpack_require__(12);\nvar comettransport_default = /*#__PURE__*/__webpack_require__.n(comettransport);\n\n// EXTERNAL MODULE: ./src/platform/web/lib/transport/xhrrequest.ts\nvar xhrrequest = __webpack_require__(17);\nvar xhrrequest_default = /*#__PURE__*/__webpack_require__.n(xhrrequest);\n\n// CONCATENATED MODULE: ./src/platform/web/lib/transport/xhrpollingtransport.js\n\n\n\n\n\nvar xhrpollingtransport_XHRPollingTransport = function (connectionManager) {\n var shortName = 'xhr_polling';\n\n function XHRPollingTransport(connectionManager, auth, params) {\n params.stream = false;\n comettransport_default.a.call(this, connectionManager, auth, params);\n this.shortName = shortName;\n }\n utils[\"inherits\"](XHRPollingTransport, comettransport_default.a);\n\n XHRPollingTransport.isAvailable = function () {\n return platform_default.a.Config.xhrSupported && platform_default.a.Config.allowComet;\n };\n\n XHRPollingTransport.prototype.toString = function () {\n return 'XHRPollingTransport; uri=' + this.baseUri + '; isConnected=' + this.isConnected;\n };\n\n XHRPollingTransport.prototype.createRequest = function (uri, headers, params, body, requestMode) {\n return xhrrequest_default.a.createRequest(uri, headers, params, body, requestMode, this.timeouts);\n };\n\n if (typeof connectionManager !== 'undefined' && XHRPollingTransport.isAvailable()) {\n connectionManager.supportedTransports[shortName] = XHRPollingTransport;\n }\n\n return XHRPollingTransport;\n};\n\n/* harmony default export */ var xhrpollingtransport = (xhrpollingtransport_XHRPollingTransport);\n\n// CONCATENATED MODULE: ./src/platform/web/lib/transport/xhrstreamingtransport.js\n\n\n\n\n\nvar xhrstreamingtransport_XHRStreamingTransport = function (connectionManager) {\n var shortName = 'xhr_streaming';\n\n /* public constructor */\n function XHRStreamingTransport(connectionManager, auth, params) {\n comettransport_default.a.call(this, connectionManager, auth, params);\n this.shortName = shortName;\n }\n utils[\"inherits\"](XHRStreamingTransport, comettransport_default.a);\n\n XHRStreamingTransport.isAvailable = function () {\n return platform_default.a.Config.xhrSupported && platform_default.a.Config.streamingSupported && platform_default.a.Config.allowComet;\n };\n\n XHRStreamingTransport.prototype.toString = function () {\n return 'XHRStreamingTransport; uri=' + this.baseUri + '; isConnected=' + this.isConnected;\n };\n\n XHRStreamingTransport.prototype.createRequest = function (uri, headers, params, body, requestMode) {\n return xhrrequest_default.a.createRequest(uri, headers, params, body, requestMode, this.timeouts);\n };\n\n if (typeof connectionManager !== 'undefined' && XHRStreamingTransport.isAvailable()) {\n connectionManager.supportedTransports[shortName] = XHRStreamingTransport;\n }\n\n return XHRStreamingTransport;\n};\n\n/* harmony default export */ var xhrstreamingtransport = (xhrstreamingtransport_XHRStreamingTransport);\n\n// CONCATENATED MODULE: ./src/platform/web/lib/transport/index.js\n\n\n\n\n/* harmony default export */ var transport = __webpack_exports__[\"default\"] = ([jsonptransport_default.a, xhrpollingtransport, xhrstreamingtransport]);\n\n\n/***/ })\n/******/ ])[\"default\"];\n});","import stringHash from 'string-hash';\nimport asap from 'asap';\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\n/* @flow */\n/* ::\ntype ObjectMap = { [id:string]: any };\n*/\n\nvar UPPERCASE_RE = /([A-Z])/g;\n\nvar UPPERCASE_RE_TO_KEBAB = function UPPERCASE_RE_TO_KEBAB(match\n/* : string */\n) {\n return (\n /* : string */\n \"-\".concat(match.toLowerCase())\n );\n};\n\nvar kebabifyStyleName = function kebabifyStyleName(string\n/* : string */\n)\n/* : string */\n{\n var result = string.replace(UPPERCASE_RE, UPPERCASE_RE_TO_KEBAB);\n\n if (result[0] === 'm' && result[1] === 's' && result[2] === '-') {\n return \"-\".concat(result);\n }\n\n return result;\n};\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n * Taken from React's CSSProperty.js\n */\n\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridColumn: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n/**\n * Taken from React's CSSProperty.js\n *\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\n\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n * Taken from React's CSSProperty.js\n */\n\n\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O']; // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\n// Taken from React's CSSProperty.js\n\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\nvar stringifyValue = function stringifyValue(key\n/* : string */\n, prop\n/* : any */\n)\n/* : string */\n{\n if (typeof prop === \"number\") {\n if (isUnitlessNumber[key]) {\n return \"\" + prop;\n } else {\n return prop + \"px\";\n }\n } else {\n return '' + prop;\n }\n};\nvar stringifyAndImportantifyValue = function stringifyAndImportantifyValue(key\n/* : string */\n, prop\n/* : any */\n) {\n return (\n /* : string */\n importantify(stringifyValue(key, prop))\n );\n}; // Turn a string into a hash string of base-36 values (using letters and numbers)\n// eslint-disable-next-line no-unused-vars\n\nvar hashString = function hashString(string\n/* : string */\n, key\n/* : ?string */\n) {\n return (\n /* string */\n stringHash(string).toString(36)\n );\n}; // Hash a javascript object using JSON.stringify. This is very fast, about 3\n// microseconds on my computer for a sample object:\n// http://jsperf.com/test-hashfnv32a-hash/5\n//\n// Note that this uses JSON.stringify to stringify the objects so in order for\n// this to produce consistent hashes browsers need to have a consistent\n// ordering of objects. Ben Alpert says that Facebook depends on this, so we\n// can probably depend on this too.\n\nvar hashObject = function hashObject(object\n/* : ObjectMap */\n) {\n return (\n /* : string */\n hashString(JSON.stringify(object))\n );\n}; // Given a single style value string like the \"b\" from \"a: b;\", adds !important\n// to generate \"b !important\".\n\nvar importantify = function importantify(string\n/* : string */\n) {\n return (\n /* : string */\n // Bracket string character access is very fast, and in the default case we\n // normally don't expect there to be \"!important\" at the end of the string\n // so we can use this simple check to take an optimized path. If there\n // happens to be a \"!\" in this position, we follow up with a more thorough\n // check.\n string[string.length - 10] === '!' && string.slice(-11) === ' !important' ? string : \"\".concat(string, \" !important\")\n );\n};\n\n/* @flow */\nvar MAP_EXISTS = typeof Map !== 'undefined';\n\nvar OrderedElements =\n/*#__PURE__*/\nfunction () {\n /* ::\n elements: {[string]: any};\n keyOrder: string[];\n */\n function OrderedElements() {\n this.elements = {};\n this.keyOrder = [];\n }\n\n var _proto = OrderedElements.prototype;\n\n _proto.forEach = function forEach(callback\n /* : (string, any) => void */\n ) {\n for (var i = 0; i < this.keyOrder.length; i++) {\n // (value, key) to match Map's API\n callback(this.elements[this.keyOrder[i]], this.keyOrder[i]);\n }\n };\n\n _proto.set = function set(key\n /* : string */\n , value\n /* : any */\n , shouldReorder\n /* : ?boolean */\n ) {\n if (!this.elements.hasOwnProperty(key)) {\n this.keyOrder.push(key);\n } else if (shouldReorder) {\n var index = this.keyOrder.indexOf(key);\n this.keyOrder.splice(index, 1);\n this.keyOrder.push(key);\n }\n\n if (value == null) {\n this.elements[key] = value;\n return;\n }\n\n if (MAP_EXISTS && value instanceof Map || value instanceof OrderedElements) {\n // We have found a nested Map, so we need to recurse so that all\n // of the nested objects and Maps are merged properly.\n var nested = this.elements.hasOwnProperty(key) ? this.elements[key] : new OrderedElements();\n value.forEach(function (value, key) {\n nested.set(key, value, shouldReorder);\n });\n this.elements[key] = nested;\n return;\n }\n\n if (!Array.isArray(value) && _typeof(value) === 'object') {\n // We have found a nested object, so we need to recurse so that all\n // of the nested objects and Maps are merged properly.\n var _nested = this.elements.hasOwnProperty(key) ? this.elements[key] : new OrderedElements();\n\n var keys = Object.keys(value);\n\n for (var i = 0; i < keys.length; i += 1) {\n _nested.set(keys[i], value[keys[i]], shouldReorder);\n }\n\n this.elements[key] = _nested;\n return;\n }\n\n this.elements[key] = value;\n };\n\n _proto.get = function get(key\n /* : string */\n )\n /* : any */\n {\n return this.elements[key];\n };\n\n _proto.has = function has(key\n /* : string */\n )\n /* : boolean */\n {\n return this.elements.hasOwnProperty(key);\n };\n\n _proto.addStyleType = function addStyleType(styleType\n /* : any */\n )\n /* : void */\n {\n var _this = this;\n\n if (MAP_EXISTS && styleType instanceof Map || styleType instanceof OrderedElements) {\n styleType.forEach(function (value, key) {\n _this.set(key, value, true);\n });\n } else {\n var keys = Object.keys(styleType);\n\n for (var i = 0; i < keys.length; i++) {\n this.set(keys[i], styleType[keys[i]], true);\n }\n }\n };\n\n return OrderedElements;\n}();\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n.default || n;\n}\n\nvar capitalizeString_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = capitalizeString;\nfunction capitalizeString(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n});\n\nunwrapExports(capitalizeString_1);\n\nvar prefixProperty_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = prefixProperty;\n\n\n\nvar _capitalizeString2 = _interopRequireDefault(capitalizeString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction prefixProperty(prefixProperties, property, style) {\n if (prefixProperties.hasOwnProperty(property)) {\n var newStyle = {};\n var requiredPrefixes = prefixProperties[property];\n var capitalizedProperty = (0, _capitalizeString2.default)(property);\n var keys = Object.keys(style);\n for (var i = 0; i < keys.length; i++) {\n var styleProperty = keys[i];\n if (styleProperty === property) {\n for (var j = 0; j < requiredPrefixes.length; j++) {\n newStyle[requiredPrefixes[j] + capitalizedProperty] = style[property];\n }\n }\n newStyle[styleProperty] = style[styleProperty];\n }\n return newStyle;\n }\n return style;\n}\n});\n\nunwrapExports(prefixProperty_1);\n\nvar prefixValue_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = prefixValue;\nfunction prefixValue(plugins, property, value, style, metaData) {\n for (var i = 0, len = plugins.length; i < len; ++i) {\n var processedValue = plugins[i](property, value, style, metaData);\n\n // we can stop processing if a value is returned\n // as all plugin criteria are unique\n if (processedValue) {\n return processedValue;\n }\n }\n}\n});\n\nunwrapExports(prefixValue_1);\n\nvar addNewValuesOnly_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addNewValuesOnly;\nfunction addIfNew(list, value) {\n if (list.indexOf(value) === -1) {\n list.push(value);\n }\n}\n\nfunction addNewValuesOnly(list, values) {\n if (Array.isArray(values)) {\n for (var i = 0, len = values.length; i < len; ++i) {\n addIfNew(list, values[i]);\n }\n } else {\n addIfNew(list, values);\n }\n}\n});\n\nunwrapExports(addNewValuesOnly_1);\n\nvar isObject_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isObject;\nfunction isObject(value) {\n return value instanceof Object && !Array.isArray(value);\n}\n});\n\nunwrapExports(isObject_1);\n\nvar createPrefixer_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createPrefixer;\n\n\n\nvar _prefixProperty2 = _interopRequireDefault(prefixProperty_1);\n\n\n\nvar _prefixValue2 = _interopRequireDefault(prefixValue_1);\n\n\n\nvar _addNewValuesOnly2 = _interopRequireDefault(addNewValuesOnly_1);\n\n\n\nvar _isObject2 = _interopRequireDefault(isObject_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createPrefixer(_ref) {\n var prefixMap = _ref.prefixMap,\n plugins = _ref.plugins;\n\n return function prefix(style) {\n for (var property in style) {\n var value = style[property];\n\n // handle nested objects\n if ((0, _isObject2.default)(value)) {\n style[property] = prefix(value);\n // handle array values\n } else if (Array.isArray(value)) {\n var combinedValue = [];\n\n for (var i = 0, len = value.length; i < len; ++i) {\n var processedValue = (0, _prefixValue2.default)(plugins, property, value[i], style, prefixMap);\n (0, _addNewValuesOnly2.default)(combinedValue, processedValue || value[i]);\n }\n\n // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n if (combinedValue.length > 0) {\n style[property] = combinedValue;\n }\n } else {\n var _processedValue = (0, _prefixValue2.default)(plugins, property, value, style, prefixMap);\n\n // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n if (_processedValue) {\n style[property] = _processedValue;\n }\n\n style = (0, _prefixProperty2.default)(prefixMap, property, style);\n }\n }\n\n return style;\n };\n}\n});\n\nvar createPrefixer = unwrapExports(createPrefixer_1);\n\nvar backgroundClip_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = backgroundClip;\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip#Browser_compatibility\nfunction backgroundClip(property, value) {\n if (typeof value === 'string' && value === 'text') {\n return ['-webkit-text', 'text'];\n }\n}\n});\n\nvar backgroundClip = unwrapExports(backgroundClip_1);\n\nvar isPrefixedValue_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPrefixedValue;\nvar regex = /-webkit-|-moz-|-ms-/;\n\nfunction isPrefixedValue(value) {\n return typeof value === 'string' && regex.test(value);\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(isPrefixedValue_1);\n\nvar calc_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = calc;\n\n\n\nvar _isPrefixedValue2 = _interopRequireDefault(isPrefixedValue_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar prefixes = ['-webkit-', '-moz-', ''];\nfunction calc(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('calc(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/calc\\(/g, prefix + 'calc(');\n });\n }\n}\n});\n\nvar calc = unwrapExports(calc_1);\n\nvar crossFade_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = crossFade;\n\n\n\nvar _isPrefixedValue2 = _interopRequireDefault(isPrefixedValue_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// http://caniuse.com/#search=cross-fade\nvar prefixes = ['-webkit-', ''];\nfunction crossFade(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('cross-fade(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/cross-fade\\(/g, prefix + 'cross-fade(');\n });\n }\n}\n});\n\nvar crossFade = unwrapExports(crossFade_1);\n\nvar cursor_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = cursor;\nvar prefixes = ['-webkit-', '-moz-', ''];\n\nvar values = {\n 'zoom-in': true,\n 'zoom-out': true,\n grab: true,\n grabbing: true\n};\n\nfunction cursor(property, value) {\n if (property === 'cursor' && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}\n});\n\nvar cursor = unwrapExports(cursor_1);\n\nvar filter_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = filter;\n\n\n\nvar _isPrefixedValue2 = _interopRequireDefault(isPrefixedValue_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// http://caniuse.com/#feat=css-filter-function\nvar prefixes = ['-webkit-', ''];\nfunction filter(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('filter(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/filter\\(/g, prefix + 'filter(');\n });\n }\n}\n});\n\nvar filter = unwrapExports(filter_1);\n\nvar flex_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = flex;\nvar values = {\n flex: ['-webkit-box', '-moz-box', '-ms-flexbox', '-webkit-flex', 'flex'],\n 'inline-flex': ['-webkit-inline-box', '-moz-inline-box', '-ms-inline-flexbox', '-webkit-inline-flex', 'inline-flex']\n};\n\nfunction flex(property, value) {\n if (property === 'display' && values.hasOwnProperty(value)) {\n return values[value];\n }\n}\n});\n\nvar flex = unwrapExports(flex_1);\n\nvar flexboxIE_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = flexboxIE;\nvar alternativeValues = {\n 'space-around': 'distribute',\n 'space-between': 'justify',\n 'flex-start': 'start',\n 'flex-end': 'end'\n};\nvar alternativeProps = {\n alignContent: 'msFlexLinePack',\n alignSelf: 'msFlexItemAlign',\n alignItems: 'msFlexAlign',\n justifyContent: 'msFlexPack',\n order: 'msFlexOrder',\n flexGrow: 'msFlexPositive',\n flexShrink: 'msFlexNegative',\n flexBasis: 'msFlexPreferredSize'\n // Full expanded syntax is flex-grow | flex-shrink | flex-basis.\n};var flexShorthandMappings = {\n auto: '1 1 auto',\n inherit: 'inherit',\n initial: '0 1 auto',\n none: '0 0 auto',\n unset: 'unset'\n};\nvar isUnitlessNumber = /^\\d+(\\.\\d+)?$/;\n\nfunction flexboxIE(property, value, style) {\n if (Object.prototype.hasOwnProperty.call(alternativeProps, property)) {\n style[alternativeProps[property]] = alternativeValues[value] || value;\n }\n if (property === 'flex') {\n // For certain values we can do straight mappings based on the spec\n // for the expansions.\n if (Object.prototype.hasOwnProperty.call(flexShorthandMappings, value)) {\n style.msFlex = flexShorthandMappings[value];\n return;\n }\n // Here we have no direct mapping, so we favor looking for a\n // unitless positive number as that will be the most common use-case.\n if (isUnitlessNumber.test(value)) {\n style.msFlex = value + ' 1 0%';\n return;\n }\n\n // The next thing we can look for is if there are multiple values.\n var flexValues = value.split(/\\s/);\n // If we only have a single value that wasn't a positive unitless\n // or a pre-mapped value, then we can assume it is a unit value.\n switch (flexValues.length) {\n case 1:\n style.msFlex = '1 1 ' + value;\n return;\n case 2:\n // If we have 2 units, then we expect that the first will\n // always be a unitless number and represents flex-grow.\n // The second unit will represent flex-shrink for a unitless\n // value, or flex-basis otherwise.\n if (isUnitlessNumber.test(flexValues[1])) {\n style.msFlex = flexValues[0] + ' ' + flexValues[1] + ' 0%';\n } else {\n style.msFlex = flexValues[0] + ' 1 ' + flexValues[1];\n }\n return;\n default:\n style.msFlex = value;\n }\n }\n}\n});\n\nvar flexboxIE = unwrapExports(flexboxIE_1);\n\nvar flexboxOld_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = flexboxOld;\nvar alternativeValues = {\n 'space-around': 'justify',\n 'space-between': 'justify',\n 'flex-start': 'start',\n 'flex-end': 'end',\n 'wrap-reverse': 'multiple',\n wrap: 'multiple'\n};\n\nvar alternativeProps = {\n alignItems: 'WebkitBoxAlign',\n justifyContent: 'WebkitBoxPack',\n flexWrap: 'WebkitBoxLines',\n flexGrow: 'WebkitBoxFlex'\n};\n\nfunction flexboxOld(property, value, style) {\n if (property === 'flexDirection' && typeof value === 'string') {\n if (value.indexOf('column') > -1) {\n style.WebkitBoxOrient = 'vertical';\n } else {\n style.WebkitBoxOrient = 'horizontal';\n }\n if (value.indexOf('reverse') > -1) {\n style.WebkitBoxDirection = 'reverse';\n } else {\n style.WebkitBoxDirection = 'normal';\n }\n }\n if (alternativeProps.hasOwnProperty(property)) {\n style[alternativeProps[property]] = alternativeValues[value] || value;\n }\n}\n});\n\nvar flexboxOld = unwrapExports(flexboxOld_1);\n\nvar gradient_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = gradient;\n\n\n\nvar _isPrefixedValue2 = _interopRequireDefault(isPrefixedValue_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar prefixes = ['-webkit-', '-moz-', ''];\n\nvar values = /linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/gi;\n\nfunction gradient(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && values.test(value)) {\n return prefixes.map(function (prefix) {\n return value.replace(values, function (grad) {\n return prefix + grad;\n });\n });\n }\n}\n});\n\nvar gradient = unwrapExports(gradient_1);\n\nvar grid_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nexports.default = grid;\nfunction isSimplePositionValue(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\nvar alignmentValues = ['center', 'end', 'start', 'stretch'];\n\nvar displayValues = {\n 'inline-grid': ['-ms-inline-grid', 'inline-grid'],\n grid: ['-ms-grid', 'grid']\n};\n\nvar propertyConverters = {\n alignSelf: function alignSelf(value, style) {\n if (alignmentValues.indexOf(value) > -1) {\n style.msGridRowAlign = value;\n }\n },\n\n gridColumn: function gridColumn(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridColumn = value;\n } else {\n var _value$split$map = value.split('/').map(function (position) {\n return +position;\n }),\n _value$split$map2 = _slicedToArray(_value$split$map, 2),\n start = _value$split$map2[0],\n end = _value$split$map2[1];\n\n propertyConverters.gridColumnStart(start, style);\n propertyConverters.gridColumnEnd(end, style);\n }\n },\n\n gridColumnEnd: function gridColumnEnd(value, style) {\n var msGridColumn = style.msGridColumn;\n\n if (isSimplePositionValue(value) && isSimplePositionValue(msGridColumn)) {\n style.msGridColumnSpan = value - msGridColumn;\n }\n },\n\n gridColumnStart: function gridColumnStart(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridColumn = value;\n }\n },\n\n gridRow: function gridRow(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridRow = value;\n } else {\n var _value$split$map3 = value.split('/').map(function (position) {\n return +position;\n }),\n _value$split$map4 = _slicedToArray(_value$split$map3, 2),\n start = _value$split$map4[0],\n end = _value$split$map4[1];\n\n propertyConverters.gridRowStart(start, style);\n propertyConverters.gridRowEnd(end, style);\n }\n },\n\n gridRowEnd: function gridRowEnd(value, style) {\n var msGridRow = style.msGridRow;\n\n if (isSimplePositionValue(value) && isSimplePositionValue(msGridRow)) {\n style.msGridRowSpan = value - msGridRow;\n }\n },\n\n gridRowStart: function gridRowStart(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridRow = value;\n }\n },\n\n gridTemplateColumns: function gridTemplateColumns(value, style) {\n style.msGridColumns = value;\n },\n\n gridTemplateRows: function gridTemplateRows(value, style) {\n style.msGridRows = value;\n },\n\n justifySelf: function justifySelf(value, style) {\n if (alignmentValues.indexOf(value) > -1) {\n style.msGridColumnAlign = value;\n }\n }\n};\n\nfunction grid(property, value, style) {\n if (property === 'display' && value in displayValues) {\n return displayValues[value];\n }\n\n if (property in propertyConverters) {\n var propertyConverter = propertyConverters[property];\n propertyConverter(value, style);\n }\n}\n});\n\nvar grid = unwrapExports(grid_1);\n\nvar imageSet_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = imageSet;\n\n\n\nvar _isPrefixedValue2 = _interopRequireDefault(isPrefixedValue_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// http://caniuse.com/#feat=css-image-set\nvar prefixes = ['-webkit-', ''];\nfunction imageSet(property, value) {\n if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('image-set(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/image-set\\(/g, prefix + 'image-set(');\n });\n }\n}\n});\n\nvar imageSet = unwrapExports(imageSet_1);\n\nvar logical_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = logical;\nvar alternativeProps = {\n marginBlockStart: ['WebkitMarginBefore'],\n marginBlockEnd: ['WebkitMarginAfter'],\n marginInlineStart: ['WebkitMarginStart', 'MozMarginStart'],\n marginInlineEnd: ['WebkitMarginEnd', 'MozMarginEnd'],\n paddingBlockStart: ['WebkitPaddingBefore'],\n paddingBlockEnd: ['WebkitPaddingAfter'],\n paddingInlineStart: ['WebkitPaddingStart', 'MozPaddingStart'],\n paddingInlineEnd: ['WebkitPaddingEnd', 'MozPaddingEnd'],\n borderBlockStart: ['WebkitBorderBefore'],\n borderBlockStartColor: ['WebkitBorderBeforeColor'],\n borderBlockStartStyle: ['WebkitBorderBeforeStyle'],\n borderBlockStartWidth: ['WebkitBorderBeforeWidth'],\n borderBlockEnd: ['WebkitBorderAfter'],\n borderBlockEndColor: ['WebkitBorderAfterColor'],\n borderBlockEndStyle: ['WebkitBorderAfterStyle'],\n borderBlockEndWidth: ['WebkitBorderAfterWidth'],\n borderInlineStart: ['WebkitBorderStart', 'MozBorderStart'],\n borderInlineStartColor: ['WebkitBorderStartColor', 'MozBorderStartColor'],\n borderInlineStartStyle: ['WebkitBorderStartStyle', 'MozBorderStartStyle'],\n borderInlineStartWidth: ['WebkitBorderStartWidth', 'MozBorderStartWidth'],\n borderInlineEnd: ['WebkitBorderEnd', 'MozBorderEnd'],\n borderInlineEndColor: ['WebkitBorderEndColor', 'MozBorderEndColor'],\n borderInlineEndStyle: ['WebkitBorderEndStyle', 'MozBorderEndStyle'],\n borderInlineEndWidth: ['WebkitBorderEndWidth', 'MozBorderEndWidth']\n};\n\nfunction logical(property, value, style) {\n if (Object.prototype.hasOwnProperty.call(alternativeProps, property)) {\n var alternativePropList = alternativeProps[property];\n for (var i = 0, len = alternativePropList.length; i < len; ++i) {\n style[alternativePropList[i]] = value;\n }\n }\n}\n});\n\nvar logical = unwrapExports(logical_1);\n\nvar position_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = position;\nfunction position(property, value) {\n if (property === 'position' && value === 'sticky') {\n return ['-webkit-sticky', 'sticky'];\n }\n}\n});\n\nvar position = unwrapExports(position_1);\n\nvar sizing_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = sizing;\nvar prefixes = ['-webkit-', '-moz-', ''];\n\nvar properties = {\n maxHeight: true,\n maxWidth: true,\n width: true,\n height: true,\n columnWidth: true,\n minWidth: true,\n minHeight: true\n};\nvar values = {\n 'min-content': true,\n 'max-content': true,\n 'fill-available': true,\n 'fit-content': true,\n 'contain-floats': true\n};\n\nfunction sizing(property, value) {\n if (properties.hasOwnProperty(property) && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}\n});\n\nvar sizing = unwrapExports(sizing_1);\n\n/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g;\nvar msPattern = /^ms-/;\nvar cache = {};\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower);\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nvar hyphenateStyleName$1 = /*#__PURE__*/Object.freeze({\n default: hyphenateStyleName\n});\n\nvar _hyphenateStyleName = getCjsExportFromNamespace(hyphenateStyleName$1);\n\nvar hyphenateProperty_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hyphenateProperty;\n\n\n\nvar _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction hyphenateProperty(property) {\n return (0, _hyphenateStyleName2.default)(property);\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(hyphenateProperty_1);\n\nvar transition_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = transition;\n\n\n\nvar _hyphenateProperty2 = _interopRequireDefault(hyphenateProperty_1);\n\n\n\nvar _isPrefixedValue2 = _interopRequireDefault(isPrefixedValue_1);\n\n\n\nvar _capitalizeString2 = _interopRequireDefault(capitalizeString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar properties = {\n transition: true,\n transitionProperty: true,\n WebkitTransition: true,\n WebkitTransitionProperty: true,\n MozTransition: true,\n MozTransitionProperty: true\n};\n\n\nvar prefixMapping = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n ms: '-ms-'\n};\n\nfunction prefixValue(value, propertyPrefixMap) {\n if ((0, _isPrefixedValue2.default)(value)) {\n return value;\n }\n\n // only split multi values, not cubic beziers\n var multipleValues = value.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g);\n\n for (var i = 0, len = multipleValues.length; i < len; ++i) {\n var singleValue = multipleValues[i];\n var values = [singleValue];\n for (var property in propertyPrefixMap) {\n var dashCaseProperty = (0, _hyphenateProperty2.default)(property);\n\n if (singleValue.indexOf(dashCaseProperty) > -1 && dashCaseProperty !== 'order') {\n var prefixes = propertyPrefixMap[property];\n for (var j = 0, pLen = prefixes.length; j < pLen; ++j) {\n // join all prefixes and create a new value\n values.unshift(singleValue.replace(dashCaseProperty, prefixMapping[prefixes[j]] + dashCaseProperty));\n }\n }\n }\n\n multipleValues[i] = values.join(',');\n }\n\n return multipleValues.join(',');\n}\n\nfunction transition(property, value, style, propertyPrefixMap) {\n // also check for already prefixed transitions\n if (typeof value === 'string' && properties.hasOwnProperty(property)) {\n var outputValue = prefixValue(value, propertyPrefixMap);\n // if the property is already prefixed\n var webkitOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-moz-|-ms-/.test(val);\n }).join(',');\n\n if (property.indexOf('Webkit') > -1) {\n return webkitOutput;\n }\n\n var mozOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-webkit-|-ms-/.test(val);\n }).join(',');\n\n if (property.indexOf('Moz') > -1) {\n return mozOutput;\n }\n\n style['Webkit' + (0, _capitalizeString2.default)(property)] = webkitOutput;\n style['Moz' + (0, _capitalizeString2.default)(property)] = mozOutput;\n return outputValue;\n }\n}\n});\n\nvar transition = unwrapExports(transition_1);\n\nvar w = [\"Webkit\"];\nvar m = [\"Moz\"];\nvar ms = [\"ms\"];\nvar wm = [\"Webkit\", \"Moz\"];\nvar wms = [\"Webkit\", \"ms\"];\nvar wmms = [\"Webkit\", \"Moz\", \"ms\"];\nvar staticData = {\n plugins: [backgroundClip, calc, crossFade, cursor, filter, flex, flexboxIE, flexboxOld, gradient, grid, imageSet, logical, position, sizing, transition],\n prefixMap: {\n \"transform\": wms,\n \"transformOrigin\": wms,\n \"transformOriginX\": wms,\n \"transformOriginY\": wms,\n \"backfaceVisibility\": w,\n \"perspective\": w,\n \"perspectiveOrigin\": w,\n \"transformStyle\": w,\n \"transformOriginZ\": w,\n \"animation\": w,\n \"animationDelay\": w,\n \"animationDirection\": w,\n \"animationFillMode\": w,\n \"animationDuration\": w,\n \"animationIterationCount\": w,\n \"animationName\": w,\n \"animationPlayState\": w,\n \"animationTimingFunction\": w,\n \"appearance\": wm,\n \"userSelect\": wmms,\n \"fontKerning\": w,\n \"textEmphasisPosition\": w,\n \"textEmphasis\": w,\n \"textEmphasisStyle\": w,\n \"textEmphasisColor\": w,\n \"boxDecorationBreak\": w,\n \"clipPath\": w,\n \"maskImage\": w,\n \"maskMode\": w,\n \"maskRepeat\": w,\n \"maskPosition\": w,\n \"maskClip\": w,\n \"maskOrigin\": w,\n \"maskSize\": w,\n \"maskComposite\": w,\n \"mask\": w,\n \"maskBorderSource\": w,\n \"maskBorderMode\": w,\n \"maskBorderSlice\": w,\n \"maskBorderWidth\": w,\n \"maskBorderOutset\": w,\n \"maskBorderRepeat\": w,\n \"maskBorder\": w,\n \"maskType\": w,\n \"textDecorationStyle\": wm,\n \"textDecorationSkip\": wm,\n \"textDecorationLine\": wm,\n \"textDecorationColor\": wm,\n \"filter\": w,\n \"fontFeatureSettings\": wm,\n \"breakAfter\": wmms,\n \"breakBefore\": wmms,\n \"breakInside\": wmms,\n \"columnCount\": wm,\n \"columnFill\": wm,\n \"columnGap\": wm,\n \"columnRule\": wm,\n \"columnRuleColor\": wm,\n \"columnRuleStyle\": wm,\n \"columnRuleWidth\": wm,\n \"columns\": wm,\n \"columnSpan\": wm,\n \"columnWidth\": wm,\n \"writingMode\": wms,\n \"flex\": wms,\n \"flexBasis\": w,\n \"flexDirection\": wms,\n \"flexGrow\": w,\n \"flexFlow\": wms,\n \"flexShrink\": w,\n \"flexWrap\": wms,\n \"alignContent\": w,\n \"alignItems\": w,\n \"alignSelf\": w,\n \"justifyContent\": w,\n \"order\": w,\n \"transitionDelay\": w,\n \"transitionDuration\": w,\n \"transitionProperty\": w,\n \"transitionTimingFunction\": w,\n \"backdropFilter\": w,\n \"scrollSnapType\": wms,\n \"scrollSnapPointsX\": wms,\n \"scrollSnapPointsY\": wms,\n \"scrollSnapDestination\": wms,\n \"scrollSnapCoordinate\": wms,\n \"shapeImageThreshold\": w,\n \"shapeImageMargin\": w,\n \"shapeImageOutside\": w,\n \"hyphens\": wmms,\n \"flowInto\": wms,\n \"flowFrom\": wms,\n \"regionFragment\": wms,\n \"textOrientation\": w,\n \"boxSizing\": m,\n \"textAlignLast\": m,\n \"tabSize\": m,\n \"wrapFlow\": ms,\n \"wrapThrough\": ms,\n \"wrapMargin\": ms,\n \"touchAction\": ms,\n \"textSizeAdjust\": wms,\n \"borderImage\": w,\n \"borderImageOutset\": w,\n \"borderImageRepeat\": w,\n \"borderImageSlice\": w,\n \"borderImageSource\": w,\n \"borderImageWidth\": w\n }\n};\n\nvar prefixAll = createPrefixer(staticData);\n/* ::\nimport type { SheetDefinition } from './index.js';\ntype StringHandlers = { [id:string]: Function };\ntype SelectorCallback = (selector: string) => string[];\nexport type SelectorHandler = (\n selector: string,\n baseSelector: string,\n callback: SelectorCallback\n) => string[] | string | null;\n*/\n\n/**\n * `selectorHandlers` are functions which handle special selectors which act\n * differently than normal style definitions. These functions look at the\n * current selector and can generate CSS for the styles in their subtree by\n * calling the callback with a new selector.\n *\n * For example, when generating styles with a base selector of '.foo' and the\n * following styles object:\n *\n * {\n * ':nth-child(2n)': {\n * ':hover': {\n * color: 'red'\n * }\n * }\n * }\n *\n * when we reach the ':hover' style, we would call our selector handlers like\n *\n * handler(':hover', '.foo:nth-child(2n)', callback)\n *\n * Since our `pseudoSelectors` handles ':hover' styles, that handler would call\n * the callback like\n *\n * callback('.foo:nth-child(2n):hover')\n *\n * to generate its subtree `{ color: 'red' }` styles with a\n * '.foo:nth-child(2n):hover' selector. The callback would return an array of CSS\n * rules like\n *\n * ['.foo:nth-child(2n):hover{color:red !important;}']\n *\n * and the handler would then return that resulting CSS.\n *\n * `defaultSelectorHandlers` is the list of default handlers used in a call to\n * `generateCSS`.\n *\n * @name SelectorHandler\n * @function\n * @param {string} selector: The currently inspected selector. ':hover' in the\n * example above.\n * @param {string} baseSelector: The selector of the parent styles.\n * '.foo:nth-child(2n)' in the example above.\n * @param {function} generateSubtreeStyles: A function which can be called to\n * generate CSS for the subtree of styles corresponding to the selector.\n * Accepts a new baseSelector to use for generating those styles.\n * @returns {string[] | string | null} The generated CSS for this selector, or\n * null if we don't handle this selector.\n */\n\nvar defaultSelectorHandlers\n/* : SelectorHandler[] */\n= [// Handle pseudo-selectors, like :hover and :nth-child(3n)\nfunction pseudoSelectors(selector, baseSelector, generateSubtreeStyles) {\n if (selector[0] !== \":\") {\n return null;\n }\n\n return generateSubtreeStyles(baseSelector + selector);\n}, // Handle media queries (or font-faces)\nfunction mediaQueries(selector, baseSelector, generateSubtreeStyles) {\n if (selector[0] !== \"@\") {\n return null;\n } // Generate the styles normally, and then wrap them in the media query.\n\n\n var generated = generateSubtreeStyles(baseSelector);\n return [\"\".concat(selector, \"{\").concat(generated.join(''), \"}\")];\n}];\n/**\n * Generate CSS for a selector and some styles.\n *\n * This function handles the media queries and pseudo selectors that can be used\n * in aphrodite styles.\n *\n * @param {string} selector: A base CSS selector for the styles to be generated\n * with.\n * @param {Object} styleTypes: A list of properties of the return type of\n * StyleSheet.create, e.g. [styles.red, styles.blue].\n * @param {Array.<SelectorHandler>} selectorHandlers: A list of selector\n * handlers to use for handling special selectors. See\n * `defaultSelectorHandlers`.\n * @param stringHandlers: See `generateCSSRuleset`\n * @param useImportant: See `generateCSSRuleset`\n *\n * To actually generate the CSS special-construct-less styles are passed to\n * `generateCSSRuleset`.\n *\n * For instance, a call to\n *\n * generateCSS(\".foo\", [{\n * color: \"red\",\n * \"@media screen\": {\n * height: 20,\n * \":hover\": {\n * backgroundColor: \"black\"\n * }\n * },\n * \":active\": {\n * fontWeight: \"bold\"\n * }\n * }], defaultSelectorHandlers);\n *\n * with the default `selectorHandlers` will make 5 calls to\n * `generateCSSRuleset`:\n *\n * generateCSSRuleset(\".foo\", { color: \"red\" }, ...)\n * generateCSSRuleset(\".foo:active\", { fontWeight: \"bold\" }, ...)\n * // These 2 will be wrapped in @media screen {}\n * generateCSSRuleset(\".foo\", { height: 20 }, ...)\n * generateCSSRuleset(\".foo:hover\", { backgroundColor: \"black\" }, ...)\n */\n\nvar generateCSS = function generateCSS(selector\n/* : string */\n, styleTypes\n/* : SheetDefinition[] */\n, selectorHandlers\n/* : SelectorHandler[] */\n, stringHandlers\n/* : StringHandlers */\n, useImportant\n/* : boolean */\n)\n/* : string[] */\n{\n var merged = new OrderedElements();\n\n for (var i = 0; i < styleTypes.length; i++) {\n merged.addStyleType(styleTypes[i]);\n }\n\n var plainDeclarations = new OrderedElements();\n var generatedStyles = []; // TODO(emily): benchmark this to see if a plain for loop would be faster.\n\n merged.forEach(function (val, key) {\n // For each key, see if one of the selector handlers will handle these\n // styles.\n var foundHandler = selectorHandlers.some(function (handler) {\n var result = handler(key, selector, function (newSelector) {\n return generateCSS(newSelector, [val], selectorHandlers, stringHandlers, useImportant);\n });\n\n if (result != null) {\n // If the handler returned something, add it to the generated\n // CSS and stop looking for another handler.\n if (Array.isArray(result)) {\n generatedStyles.push.apply(generatedStyles, _toConsumableArray(result));\n } else {\n // eslint-disable-next-line\n console.warn('WARNING: Selector handlers should return an array of rules.' + 'Returning a string containing multiple rules is deprecated.', handler);\n generatedStyles.push(\"@media all {\".concat(result, \"}\"));\n }\n\n return true;\n }\n }); // If none of the handlers handled it, add it to the list of plain\n // style declarations.\n\n if (!foundHandler) {\n plainDeclarations.set(key, val, true);\n }\n });\n var generatedRuleset = generateCSSRuleset(selector, plainDeclarations, stringHandlers, useImportant, selectorHandlers);\n\n if (generatedRuleset) {\n generatedStyles.unshift(generatedRuleset);\n }\n\n return generatedStyles;\n};\n/**\n * Helper method of generateCSSRuleset to facilitate custom handling of certain\n * CSS properties. Used for e.g. font families.\n *\n * See generateCSSRuleset for usage and documentation of paramater types.\n */\n\nvar runStringHandlers = function runStringHandlers(declarations\n/* : OrderedElements */\n, stringHandlers\n/* : StringHandlers */\n, selectorHandlers\n/* : SelectorHandler[] */\n)\n/* : void */\n{\n if (!stringHandlers) {\n return;\n }\n\n var stringHandlerKeys = Object.keys(stringHandlers);\n\n for (var i = 0; i < stringHandlerKeys.length; i++) {\n var key = stringHandlerKeys[i];\n\n if (declarations.has(key)) {\n // A declaration exists for this particular string handler, so we\n // need to let the string handler interpret the declaration first\n // before proceeding.\n //\n // TODO(emily): Pass in a callback which generates CSS, similar to\n // how our selector handlers work, instead of passing in\n // `selectorHandlers` and have them make calls to `generateCSS`\n // themselves. Right now, this is impractical because our string\n // handlers are very specialized and do complex things.\n declarations.set(key, stringHandlers[key](declarations.get(key), selectorHandlers), // Preserve order here, since we are really replacing an\n // unprocessed style with a processed style, not overriding an\n // earlier style\n false);\n }\n }\n};\n\nvar transformRule = function transformRule(key\n/* : string */\n, value\n/* : string */\n, transformValue\n/* : function */\n) {\n return (\n /* : string */\n \"\".concat(kebabifyStyleName(key), \":\").concat(transformValue(key, value), \";\")\n );\n};\n\nvar arrayToObjectKeysReducer = function arrayToObjectKeysReducer(acc, val) {\n acc[val] = true;\n return acc;\n};\n/**\n * Generate a CSS ruleset with the selector and containing the declarations.\n *\n * This function assumes that the given declarations don't contain any special\n * children (such as media queries, pseudo-selectors, or descendant styles).\n *\n * Note that this method does not deal with nesting used for e.g.\n * psuedo-selectors or media queries. That responsibility is left to the\n * `generateCSS` function.\n *\n * @param {string} selector: the selector associated with the ruleset\n * @param {Object} declarations: a map from camelCased CSS property name to CSS\n * property value.\n * @param {Object.<string, function>} stringHandlers: a map from camelCased CSS\n * property name to a function which will map the given value to the value\n * that is output.\n * @param {bool} useImportant: A boolean saying whether to append \"!important\"\n * to each of the CSS declarations.\n * @returns {string} A string of raw CSS.\n *\n * Examples:\n *\n * generateCSSRuleset(\".blah\", { color: \"red\" })\n * -> \".blah{color: red !important;}\"\n * generateCSSRuleset(\".blah\", { color: \"red\" }, {}, false)\n * -> \".blah{color: red}\"\n * generateCSSRuleset(\".blah\", { color: \"red\" }, {color: c => c.toUpperCase})\n * -> \".blah{color: RED}\"\n * generateCSSRuleset(\".blah:hover\", { color: \"red\" })\n * -> \".blah:hover{color: red}\"\n */\n\n\nvar generateCSSRuleset = function generateCSSRuleset(selector\n/* : string */\n, declarations\n/* : OrderedElements */\n, stringHandlers\n/* : StringHandlers */\n, useImportant\n/* : boolean */\n, selectorHandlers\n/* : SelectorHandler[] */\n)\n/* : string */\n{\n // Mutates declarations\n runStringHandlers(declarations, stringHandlers, selectorHandlers);\n var originalElements = Object.keys(declarations.elements).reduce(arrayToObjectKeysReducer, Object.create(null)); // NOTE(emily): This mutates handledDeclarations.elements.\n\n var prefixedElements = prefixAll(declarations.elements);\n var elementNames = Object.keys(prefixedElements);\n\n if (elementNames.length !== declarations.keyOrder.length) {\n // There are some prefixed values, so we need to figure out how to sort\n // them.\n //\n // Loop through prefixedElements, looking for anything that is not in\n // sortOrder, which means it was added by prefixAll. This means that we\n // need to figure out where it should appear in the sortOrder.\n for (var i = 0; i < elementNames.length; i++) {\n if (!originalElements[elementNames[i]]) {\n // This element is not in the sortOrder, which means it is a prefixed\n // value that was added by prefixAll. Let's try to figure out where it\n // goes.\n var originalStyle = void 0;\n\n if (elementNames[i][0] === 'W') {\n // This is a Webkit-prefixed style, like \"WebkitTransition\". Let's\n // find its original style's sort order.\n originalStyle = elementNames[i][6].toLowerCase() + elementNames[i].slice(7);\n } else if (elementNames[i][1] === 'o') {\n // This is a Moz-prefixed style, like \"MozTransition\". We check\n // the second character to avoid colliding with Ms-prefixed\n // styles. Let's find its original style's sort order.\n originalStyle = elementNames[i][3].toLowerCase() + elementNames[i].slice(4);\n } else {\n // if (elementNames[i][1] === 's') {\n // This is a Ms-prefixed style, like \"MsTransition\".\n originalStyle = elementNames[i][2].toLowerCase() + elementNames[i].slice(3);\n }\n\n if (originalStyle && originalElements[originalStyle]) {\n var originalIndex = declarations.keyOrder.indexOf(originalStyle);\n declarations.keyOrder.splice(originalIndex, 0, elementNames[i]);\n } else {\n // We don't know what the original style was, so sort it to\n // top. This can happen for styles that are added that don't\n // have the same base name as the original style.\n declarations.keyOrder.unshift(elementNames[i]);\n }\n }\n }\n }\n\n var transformValue = useImportant === false ? stringifyValue : stringifyAndImportantifyValue;\n var rules = [];\n\n for (var _i = 0; _i < declarations.keyOrder.length; _i++) {\n var key = declarations.keyOrder[_i];\n var value = prefixedElements[key];\n\n if (Array.isArray(value)) {\n // inline-style-prefixer returns an array when there should be\n // multiple rules for the same key. Here we flatten to multiple\n // pairs with the same key.\n for (var j = 0; j < value.length; j++) {\n rules.push(transformRule(key, value[j], transformValue));\n }\n } else {\n rules.push(transformRule(key, value, transformValue));\n }\n }\n\n if (rules.length) {\n return \"\".concat(selector, \"{\").concat(rules.join(\"\"), \"}\");\n } else {\n return \"\";\n }\n};\n\n/* ::\nimport type { SheetDefinition, SheetDefinitions } from './index.js';\nimport type { MaybeSheetDefinition } from './exports.js';\nimport type { SelectorHandler } from './generate.js';\n*/\n// The current <style> tag we are inserting into, or null if we haven't\n// inserted anything yet. We could find this each time using\n// `document.querySelector(\"style[data-aphrodite\"])`, but holding onto it is\n// faster.\n\nvar styleTag\n/* : ?HTMLStyleElement */\n= null; // Inject a set of rules into a <style> tag in the head of the document. This\n// will automatically create a style tag and then continue to use it for\n// multiple injections. It will also use a style tag with the `data-aphrodite`\n// tag on it if that exists in the DOM. This could be used for e.g. reusing the\n// same style tag that server-side rendering inserts.\n\nvar injectStyleTag = function injectStyleTag(cssRules\n/* : string[] */\n) {\n if (styleTag == null) {\n // Try to find a style tag with the `data-aphrodite` attribute first.\n styleTag = document.querySelector(\"style[data-aphrodite]\")\n /* : any */\n ; // If that doesn't work, generate a new style tag.\n\n if (styleTag == null) {\n // Taken from\n // http://stackoverflow.com/questions/524696/how-to-create-a-style-tag-with-javascript\n var head = document.head || document.getElementsByTagName('head')[0];\n styleTag = document.createElement('style');\n styleTag.type = 'text/css';\n styleTag.setAttribute(\"data-aphrodite\", \"\");\n head.appendChild(styleTag);\n }\n } // $FlowFixMe\n\n\n var sheet = styleTag.styleSheet || styleTag.sheet\n /* : any */\n ;\n\n if (sheet.insertRule) {\n var numRules = sheet.cssRules.length;\n cssRules.forEach(function (rule) {\n try {\n sheet.insertRule(rule, numRules);\n numRules += 1;\n } catch (e) {// The selector for this rule wasn't compatible with the browser\n }\n });\n } else {\n styleTag.innerText = (styleTag.innerText || '') + cssRules.join('');\n }\n}; // Custom handlers for stringifying CSS values that have side effects\n// (such as fontFamily, which can cause @font-face rules to be injected)\n\n\nvar stringHandlers = {\n // With fontFamily we look for objects that are passed in and interpret\n // them as @font-face rules that we need to inject. The value of fontFamily\n // can either be a string (as normal), an object (a single font face), or\n // an array of objects and strings.\n fontFamily: function fontFamily(val) {\n if (Array.isArray(val)) {\n var nameMap = {};\n val.forEach(function (v) {\n nameMap[fontFamily(v)] = true;\n });\n return Object.keys(nameMap).join(\",\");\n } else if (_typeof(val) === \"object\") {\n injectStyleOnce(val.src, \"@font-face\", [val], false);\n return \"\\\"\".concat(val.fontFamily, \"\\\"\");\n } else {\n return val;\n }\n },\n // With animationName we look for an object that contains keyframes and\n // inject them as an `@keyframes` block, returning a uniquely generated\n // name. The keyframes object should look like\n // animationName: {\n // from: {\n // left: 0,\n // top: 0,\n // },\n // '50%': {\n // left: 15,\n // top: 5,\n // },\n // to: {\n // left: 20,\n // top: 20,\n // }\n // }\n // TODO(emily): `stringHandlers` doesn't let us rename the key, so I have\n // to use `animationName` here. Improve that so we can call this\n // `animation` instead of `animationName`.\n animationName: function animationName(val, selectorHandlers) {\n if (Array.isArray(val)) {\n return val.map(function (v) {\n return animationName(v, selectorHandlers);\n }).join(\",\");\n } else if (_typeof(val) === \"object\") {\n // Generate a unique name based on the hash of the object. We can't\n // just use the hash because the name can't start with a number.\n // TODO(emily): this probably makes debugging hard, allow a custom\n // name?\n var name = \"keyframe_\".concat(hashObject(val)); // Since keyframes need 3 layers of nesting, we use `generateCSS` to\n // build the inner layers and wrap it in `@keyframes` ourselves.\n\n var finalVal = \"@keyframes \".concat(name, \"{\"); // TODO see if we can find a way where checking for OrderedElements\n // here is not necessary. Alternatively, perhaps we should have a\n // utility method that can iterate over either a plain object, an\n // instance of OrderedElements, or a Map, and then use that here and\n // elsewhere.\n\n if (val instanceof OrderedElements) {\n val.forEach(function (valVal, valKey) {\n finalVal += generateCSS(valKey, [valVal], selectorHandlers, stringHandlers, false).join('');\n });\n } else {\n Object.keys(val).forEach(function (key) {\n finalVal += generateCSS(key, [val[key]], selectorHandlers, stringHandlers, false).join('');\n });\n }\n\n finalVal += '}';\n injectGeneratedCSSOnce(name, [finalVal]);\n return name;\n } else {\n return val;\n }\n }\n}; // This is a map from Aphrodite's generated class names to `true` (acting as a\n// set of class names)\n\nvar alreadyInjected = {}; // This is the buffer of styles which have not yet been flushed.\n\nvar injectionBuffer\n/* : string[] */\n= []; // A flag to tell if we are already buffering styles. This could happen either\n// because we scheduled a flush call already, so newly added styles will\n// already be flushed, or because we are statically buffering on the server.\n\nvar isBuffering = false;\n\nvar injectGeneratedCSSOnce = function injectGeneratedCSSOnce(key, generatedCSS) {\n var _injectionBuffer;\n\n if (alreadyInjected[key]) {\n return;\n }\n\n if (!isBuffering) {\n // We should never be automatically buffering on the server (or any\n // place without a document), so guard against that.\n if (typeof document === \"undefined\") {\n throw new Error(\"Cannot automatically buffer without a document\");\n } // If we're not already buffering, schedule a call to flush the\n // current styles.\n\n\n isBuffering = true;\n asap(flushToStyleTag);\n }\n\n (_injectionBuffer = injectionBuffer).push.apply(_injectionBuffer, _toConsumableArray(generatedCSS));\n\n alreadyInjected[key] = true;\n};\n\nvar injectStyleOnce = function injectStyleOnce(key\n/* : string */\n, selector\n/* : string */\n, definitions\n/* : SheetDefinition[] */\n, useImportant\n/* : boolean */\n) {\n var selectorHandlers\n /* : SelectorHandler[] */\n = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n\n if (alreadyInjected[key]) {\n return;\n }\n\n var generated = generateCSS(selector, definitions, selectorHandlers, stringHandlers, useImportant);\n injectGeneratedCSSOnce(key, generated);\n};\nvar reset = function reset() {\n injectionBuffer = [];\n alreadyInjected = {};\n isBuffering = false;\n styleTag = null;\n};\nvar resetInjectedStyle = function resetInjectedStyle(key\n/* : string */\n) {\n delete alreadyInjected[key];\n};\nvar getBufferedStyles = function getBufferedStyles() {\n return injectionBuffer;\n};\nvar startBuffering = function startBuffering() {\n if (isBuffering) {\n throw new Error(\"Cannot buffer while already buffering\");\n }\n\n isBuffering = true;\n};\n\nvar flushToArray = function flushToArray() {\n isBuffering = false;\n var ret = injectionBuffer;\n injectionBuffer = [];\n return ret;\n};\n\nvar flushToString = function flushToString() {\n return flushToArray().join('');\n};\nvar flushToStyleTag = function flushToStyleTag() {\n var cssRules = flushToArray();\n\n if (cssRules.length > 0) {\n injectStyleTag(cssRules);\n }\n};\nvar getRenderedClassNames = function getRenderedClassNames()\n/* : string[] */\n{\n return Object.keys(alreadyInjected);\n};\nvar addRenderedClassNames = function addRenderedClassNames(classNames\n/* : string[] */\n) {\n classNames.forEach(function (className) {\n alreadyInjected[className] = true;\n });\n};\n\nvar isValidStyleDefinition = function isValidStyleDefinition(def\n/* : Object */\n) {\n return \"_definition\" in def && \"_name\" in def && \"_len\" in def;\n};\n\nvar processStyleDefinitions = function processStyleDefinitions(styleDefinitions\n/* : any[] */\n, classNameBits\n/* : string[] */\n, definitionBits\n/* : Object[] */\n, length\n/* : number */\n)\n/* : number */\n{\n for (var i = 0; i < styleDefinitions.length; i += 1) {\n // Filter out falsy values from the input, to allow for\n // `css(a, test && c)`\n if (styleDefinitions[i]) {\n if (Array.isArray(styleDefinitions[i])) {\n // We've encountered an array, so let's recurse\n length += processStyleDefinitions(styleDefinitions[i], classNameBits, definitionBits, length);\n } else if (isValidStyleDefinition(styleDefinitions[i])) {\n classNameBits.push(styleDefinitions[i]._name);\n definitionBits.push(styleDefinitions[i]._definition);\n length += styleDefinitions[i]._len;\n } else {\n throw new Error(\"Invalid Style Definition: Styles should be defined using the StyleSheet.create method.\");\n }\n }\n }\n\n return length;\n};\n/**\n * Inject styles associated with the passed style definition objects, and return\n * an associated CSS class name.\n *\n * @param {boolean} useImportant If true, will append !important to generated\n * CSS output. e.g. {color: red} -> \"color: red !important\".\n * @param {(Object|Object[])[]} styleDefinitions style definition objects, or\n * arbitrarily nested arrays of them, as returned as properties of the\n * return value of StyleSheet.create().\n */\n\n\nvar injectAndGetClassName = function injectAndGetClassName(useImportant\n/* : boolean */\n, styleDefinitions\n/* : MaybeSheetDefinition[] */\n, selectorHandlers\n/* : SelectorHandler[] */\n)\n/* : string */\n{\n var classNameBits = [];\n var definitionBits = []; // Mutates classNameBits and definitionBits and returns a length which we\n // will append to the hash to decrease the chance of hash collisions.\n\n var length = processStyleDefinitions(styleDefinitions, classNameBits, definitionBits, 0); // Break if there aren't any valid styles.\n\n if (classNameBits.length === 0) {\n return \"\";\n }\n\n var className;\n\n if (process.env.NODE_ENV === 'production') {\n className = classNameBits.length === 1 ? \"_\".concat(classNameBits[0]) : \"_\".concat(hashString(classNameBits.join())).concat((length % 36).toString(36));\n } else {\n className = classNameBits.join(\"-o_O-\");\n }\n\n injectStyleOnce(className, \".\".concat(className), definitionBits, useImportant, selectorHandlers);\n return className;\n};\n\n/* ::\nimport type { SelectorHandler } from './generate.js';\nexport type SheetDefinition = { [id:string]: any };\nexport type SheetDefinitions = SheetDefinition | SheetDefinition[];\ntype RenderFunction = () => string;\ntype Extension = {\n selectorHandler: SelectorHandler\n};\nexport type MaybeSheetDefinition = SheetDefinition | false | null | void\n*/\n\nvar unminifiedHashFn = function unminifiedHashFn(str\n/* : string */\n, key\n/* : string */\n) {\n return \"\".concat(key, \"_\").concat(hashString(str));\n}; // StyleSheet.create is in a hot path so we want to keep as much logic out of it\n// as possible. So, we figure out which hash function to use once, and only\n// switch it out via minify() as necessary.\n//\n// This is in an exported function to make it easier to test.\n\n\nvar initialHashFn = function initialHashFn() {\n return process.env.NODE_ENV === 'production' ? hashString : unminifiedHashFn;\n};\nvar hashFn = initialHashFn();\nvar StyleSheet = {\n create: function create(sheetDefinition\n /* : SheetDefinition */\n )\n /* : Object */\n {\n var mappedSheetDefinition = {};\n var keys = Object.keys(sheetDefinition);\n\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n var val = sheetDefinition[key];\n var stringVal = JSON.stringify(val);\n mappedSheetDefinition[key] = {\n _len: stringVal.length,\n _name: hashFn(stringVal, key),\n _definition: val\n };\n }\n\n return mappedSheetDefinition;\n },\n rehydrate: function rehydrate() {\n var renderedClassNames\n /* : string[] */\n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n addRenderedClassNames(renderedClassNames);\n }\n};\n/**\n * Utilities for using Aphrodite server-side.\n *\n * This can be minified out in client-only bundles by replacing `typeof window`\n * with `\"object\"`, e.g. via Webpack's DefinePlugin:\n *\n * new webpack.DefinePlugin({\n * \"typeof window\": JSON.stringify(\"object\")\n * })\n */\n\nvar StyleSheetServer = typeof window !== 'undefined' ? null : {\n renderStatic: function renderStatic(renderFunc\n /* : RenderFunction */\n ) {\n reset();\n startBuffering();\n var html = renderFunc();\n var cssContent = flushToString();\n return {\n html: html,\n css: {\n content: cssContent,\n renderedClassNames: getRenderedClassNames()\n }\n };\n }\n};\n/**\n * Utilities for using Aphrodite in tests.\n *\n * Not meant to be used in production.\n */\n\nvar StyleSheetTestUtils = process.env.NODE_ENV === 'production' ? null : {\n /**\n * Prevent styles from being injected into the DOM.\n *\n * This is useful in situations where you'd like to test rendering UI\n * components which use Aphrodite without any of the side-effects of\n * Aphrodite happening. Particularly useful for testing the output of\n * components when you have no DOM, e.g. testing in Node without a fake DOM.\n *\n * Should be paired with a subsequent call to\n * clearBufferAndResumeStyleInjection.\n */\n suppressStyleInjection: function suppressStyleInjection() {\n reset();\n startBuffering();\n },\n\n /**\n * Opposite method of preventStyleInject.\n */\n clearBufferAndResumeStyleInjection: function clearBufferAndResumeStyleInjection() {\n reset();\n },\n\n /**\n * Returns a string of buffered styles which have not been flushed\n *\n * @returns {string} Buffer of styles which have not yet been flushed.\n */\n getBufferedStyles: function getBufferedStyles$1() {\n return getBufferedStyles();\n }\n};\n/**\n * Generate the Aphrodite API exports, with given `selectorHandlers` and\n * `useImportant` state.\n */\n\nfunction makeExports(useImportant\n/* : boolean */\n) {\n var selectorHandlers\n /* : SelectorHandler[] */\n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultSelectorHandlers;\n return {\n StyleSheet: _objectSpread({}, StyleSheet, {\n /**\n * Returns a version of the exports of Aphrodite (i.e. an object\n * with `css` and `StyleSheet` properties) which have some\n * extensions included.\n *\n * @param {Array.<Object>} extensions: An array of extensions to\n * add to this instance of Aphrodite. Each object should have a\n * single property on it, defining which kind of extension to\n * add.\n * @param {SelectorHandler} [extensions[].selectorHandler]: A\n * selector handler extension. See `defaultSelectorHandlers` in\n * generate.js.\n *\n * @returns {Object} An object containing the exports of the new\n * instance of Aphrodite.\n */\n extend: function extend(extensions\n /* : Extension[] */\n ) {\n var extensionSelectorHandlers = extensions // Pull out extensions with a selectorHandler property\n .map(function (extension) {\n return extension.selectorHandler;\n }) // Remove nulls (i.e. extensions without a selectorHandler property).\n .filter(function (handler) {\n return handler;\n });\n return makeExports(useImportant, selectorHandlers.concat(extensionSelectorHandlers));\n }\n }),\n StyleSheetServer: StyleSheetServer,\n StyleSheetTestUtils: StyleSheetTestUtils,\n minify: function minify(shouldMinify\n /* : boolean */\n ) {\n hashFn = shouldMinify ? hashString : unminifiedHashFn;\n },\n css: function css()\n /* : MaybeSheetDefinition[] */\n {\n for (var _len = arguments.length, styleDefinitions = new Array(_len), _key = 0; _key < _len; _key++) {\n styleDefinitions[_key] = arguments[_key];\n }\n\n return injectAndGetClassName(useImportant, styleDefinitions, selectorHandlers);\n },\n flushToStyleTag: flushToStyleTag,\n injectAndGetClassName: injectAndGetClassName,\n defaultSelectorHandlers: defaultSelectorHandlers,\n reset: reset,\n resetInjectedStyle: resetInjectedStyle\n };\n}\n\nexport { makeExports as a };\n","import { a as makeExports } from './chunk-febce46b.js';\nimport 'string-hash';\nimport 'asap';\n\nvar useImportant = true; // Add !important to all style definitions\n\nvar Aphrodite = makeExports(useImportant);\nvar StyleSheet = Aphrodite.StyleSheet,\n StyleSheetServer = Aphrodite.StyleSheetServer,\n StyleSheetTestUtils = Aphrodite.StyleSheetTestUtils,\n css = Aphrodite.css,\n minify = Aphrodite.minify,\n flushToStyleTag = Aphrodite.flushToStyleTag,\n injectAndGetClassName = Aphrodite.injectAndGetClassName,\n defaultSelectorHandlers = Aphrodite.defaultSelectorHandlers,\n reset = Aphrodite.reset,\n resetInjectedStyle = Aphrodite.resetInjectedStyle;\n\nexport { StyleSheet, StyleSheetServer, StyleSheetTestUtils, css, minify, flushToStyleTag, injectAndGetClassName, defaultSelectorHandlers, reset, resetInjectedStyle };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst BusinessDaysPlugin = (options = {}, dayjsClass, dayjsFactory) => {\n const defaultWorkingWeekdays = [1, 2, 3, 4, 5];\n dayjsFactory.getWorkingWeekdays = function () {\n return options.workingWeekdays || defaultWorkingWeekdays;\n };\n dayjsFactory.setWorkingWeekdays = function (workingWeekdays) {\n options.workingWeekdays = workingWeekdays;\n };\n dayjsFactory.getHolidays = function () {\n return options.holidays || [];\n };\n dayjsFactory.setHolidays = function (holidays) {\n options.holidays = holidays;\n };\n dayjsFactory.getHolidayFormat = function () {\n return options.holidayFormat;\n };\n dayjsFactory.setHolidayFormat = function (holidayFormat) {\n options.holidayFormat = holidayFormat;\n };\n dayjsFactory.getAdditionalWorkingDays = function () {\n return options.additionalWorkingDays || [];\n };\n dayjsFactory.setAdditionalWorkingDays = function (additionalWorkingDays) {\n options.additionalWorkingDays = additionalWorkingDays;\n };\n dayjsFactory.getAdditionalWorkingDayFormat = function () {\n return options.additionalWorkingDayFormat;\n };\n dayjsFactory.setAdditionalWorkingDayFormat = function (additionalWorkingDayFormat) {\n options.additionalWorkingDayFormat = additionalWorkingDayFormat;\n };\n dayjsClass.prototype.isHoliday = function () {\n if (!options.holidays) {\n return false;\n }\n if (options.holidays.includes(this.format(options.holidayFormat))) {\n return true;\n }\n return false;\n };\n dayjsClass.prototype.isBusinessDay = function () {\n const workingWeekdays = options.workingWeekdays || defaultWorkingWeekdays;\n if (this.isHoliday()) {\n return false;\n }\n if (this.isAdditionalWorkingDay()) {\n return true;\n }\n if (workingWeekdays.includes(this.day())) {\n return true;\n }\n return false;\n };\n dayjsClass.prototype.isAdditionalWorkingDay = function () {\n if (!options.additionalWorkingDays) {\n return false;\n }\n if (options.additionalWorkingDays.includes(this.format(options.additionalWorkingDayFormat))) {\n return true;\n }\n return false;\n };\n dayjsClass.prototype.businessDaysAdd = function (days) {\n const numericDirection = days < 0 ? -1 : 1;\n let currentDay = this.clone();\n let daysRemaining = Math.abs(days);\n while (daysRemaining > 0) {\n currentDay = currentDay.add(numericDirection, `d`);\n if (currentDay.isBusinessDay()) {\n daysRemaining -= 1;\n }\n }\n return currentDay;\n };\n dayjsClass.prototype.businessDaysSubtract = function (days) {\n let currentDay = this.clone();\n currentDay = currentDay.businessDaysAdd(days * -1);\n return currentDay;\n };\n dayjsClass.prototype.businessDiff = function (date) {\n const day1 = this.clone();\n const day2 = date.clone();\n const isPositiveDiff = day1 >= day2;\n let start = isPositiveDiff ? day2 : day1;\n const end = isPositiveDiff ? day1 : day2;\n let daysBetween = 0;\n if (start.isSame(end)) {\n return daysBetween;\n }\n while (start < end) {\n if (start.isBusinessDay()) {\n daysBetween += 1;\n }\n start = start.add(1, `d`);\n }\n return isPositiveDiff ? daysBetween : -daysBetween;\n };\n dayjsClass.prototype.nextBusinessDay = function () {\n const searchLimit = 7;\n let currentDay = this.clone();\n let loopIndex = 1;\n while (loopIndex < searchLimit) {\n currentDay = currentDay.add(1, `day`);\n if (currentDay.isBusinessDay()) {\n break;\n }\n loopIndex += 1;\n }\n return currentDay;\n };\n dayjsClass.prototype.prevBusinessDay = function () {\n const searchLimit = 7;\n let currentDay = this.clone();\n let loopIndex = 1;\n while (loopIndex < searchLimit) {\n currentDay = currentDay.subtract(1, `day`);\n if (currentDay.isBusinessDay()) {\n break;\n }\n loopIndex += 1;\n }\n return currentDay;\n };\n dayjsClass.prototype.businessDaysInMonth = function () {\n if (!this.isValid()) {\n return [];\n }\n let currentDay = this.clone().startOf(`month`);\n const monthEnd = this.clone().endOf(`month`);\n const businessDays = [];\n let monthComplete = false;\n while (!monthComplete) {\n if (currentDay.isBusinessDay()) {\n businessDays.push(currentDay.clone());\n }\n currentDay = currentDay.add(1, `day`);\n if (currentDay.isAfter(monthEnd)) {\n monthComplete = true;\n }\n }\n return businessDays;\n };\n dayjsClass.prototype.lastBusinessDayOfMonth = function () {\n const businessDays = this.businessDaysInMonth();\n const lastBusinessDay = businessDays[businessDays.length - 1];\n return lastBusinessDay;\n };\n dayjsClass.prototype.businessWeeksInMonth = function () {\n if (!this.isValid()) {\n return [];\n }\n let currentDay = this.clone().startOf(`month`);\n const monthEnd = this.clone().endOf(`month`);\n const businessWeeks = [];\n let businessDays = [];\n let monthComplete = false;\n while (!monthComplete) {\n if (currentDay.isBusinessDay()) {\n businessDays.push(currentDay.clone());\n }\n if (currentDay.day() === 5 || currentDay.isSame(monthEnd, `day`)) {\n businessWeeks.push(businessDays);\n businessDays = [];\n }\n currentDay = currentDay.add(1, `day`);\n if (currentDay.isAfter(monthEnd)) {\n monthComplete = true;\n }\n }\n return businessWeeks;\n };\n};\nexports.default = BusinessDaysPlugin;\n//# sourceMappingURL=index.js.map","!function(n,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(n=\"undefined\"!=typeof globalThis?globalThis:n||self).dayjs_plugin_localeData=e()}(this,(function(){\"use strict\";return function(n,e,t){var r=e.prototype,o=function(n){return n&&(n.indexOf?n:n.s)},u=function(n,e,t,r,u){var i=n.name?n:n.$locale(),a=o(i[e]),s=o(i[t]),f=a||s.map((function(n){return n.slice(0,r)}));if(!u)return f;var d=i.weekStart;return f.map((function(n,e){return f[(e+(d||0))%7]}))},i=function(){return t.Ls[t.locale()]},a=function(n,e){return n.formats[e]||function(n){return n.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(n,e,t){return e||t.slice(1)}))}(n.formats[e.toUpperCase()])},s=function(){var n=this;return{months:function(e){return e?e.format(\"MMMM\"):u(n,\"months\")},monthsShort:function(e){return e?e.format(\"MMM\"):u(n,\"monthsShort\",\"months\",3)},firstDayOfWeek:function(){return n.$locale().weekStart||0},weekdays:function(e){return e?e.format(\"dddd\"):u(n,\"weekdays\")},weekdaysMin:function(e){return e?e.format(\"dd\"):u(n,\"weekdaysMin\",\"weekdays\",2)},weekdaysShort:function(e){return e?e.format(\"ddd\"):u(n,\"weekdaysShort\",\"weekdays\",3)},longDateFormat:function(e){return a(n.$locale(),e)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return s.bind(this)()},t.localeData=function(){var n=i();return{firstDayOfWeek:function(){return n.weekStart||0},weekdays:function(){return t.weekdays()},weekdaysShort:function(){return t.weekdaysShort()},weekdaysMin:function(){return t.weekdaysMin()},months:function(){return t.months()},monthsShort:function(){return t.monthsShort()},longDateFormat:function(e){return a(n,e)},meridiem:n.meridiem,ordinal:n.ordinal}},t.months=function(){return u(i(),\"months\")},t.monthsShort=function(){return u(i(),\"monthsShort\",\"months\",3)},t.weekdays=function(n){return u(i(),\"weekdays\",null,null,n)},t.weekdaysShort=function(n){return u(i(),\"weekdaysShort\",\"weekdays\",3,n)},t.weekdaysMin=function(n){return u(i(),\"weekdaysMin\",\"weekdays\",2,n)}}}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n // and escape the comment, thus injecting code that gets evaled.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/\\s/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Throw an error if a forbidden character was found in `variable`, to prevent\n // potential command injection attacks.\n else if (reForbiddenIdentifierChars.test(variable)) {\n throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n }\n\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return baseTrim(string);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.slice(0, trimmedEndIndex(string) + 1);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n *\n * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2022 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(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = root.pdfjsLib = factory();\n})(globalThis, () => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.LINE_FACTOR = exports.LINE_DESCENT_FACTOR = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationEditorType = exports.AnnotationEditorPrefix = exports.AnnotationEditorParamsType = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;\nexports.arrayByteLength = arrayByteLength;\nexports.arraysToBytes = arraysToBytes;\nexports.assert = assert;\nexports.bytesToString = bytesToString;\nexports.createPromiseCapability = createPromiseCapability;\nexports.createValidAbsoluteUrl = createValidAbsoluteUrl;\nexports.escapeString = escapeString;\nexports.getModificationDate = getModificationDate;\nexports.getVerbosityLevel = getVerbosityLevel;\nexports.info = info;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isArrayEqual = isArrayEqual;\nexports.isAscii = isAscii;\nexports.objectFromMap = objectFromMap;\nexports.objectSize = objectSize;\nexports.setVerbosityLevel = setVerbosityLevel;\nexports.shadow = shadow;\nexports.string32 = string32;\nexports.stringToBytes = stringToBytes;\nexports.stringToPDFString = stringToPDFString;\nexports.stringToUTF16BEString = stringToUTF16BEString;\nexports.stringToUTF8String = stringToUTF8String;\nexports.unreachable = unreachable;\nexports.utf8StringToString = utf8StringToString;\nexports.warn = warn;\n\n__w_pdfjs_require__(2);\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nexports.IDENTITY_MATRIX = IDENTITY_MATRIX;\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nexports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;\nconst LINE_FACTOR = 1.35;\nexports.LINE_FACTOR = LINE_FACTOR;\nconst LINE_DESCENT_FACTOR = 0.35;\nexports.LINE_DESCENT_FACTOR = LINE_DESCENT_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100\n};\nexports.RenderingIntentFlag = RenderingIntentFlag;\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nexports.AnnotationMode = AnnotationMode;\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nexports.AnnotationEditorPrefix = AnnotationEditorPrefix;\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n INK: 15\n};\nexports.AnnotationEditorType = AnnotationEditorType;\nconst AnnotationEditorParamsType = {\n FREETEXT_SIZE: 1,\n FREETEXT_COLOR: 2,\n FREETEXT_OPACITY: 3,\n INK_COLOR: 11,\n INK_THICKNESS: 12,\n INK_OPACITY: 13\n};\nexports.AnnotationEditorParamsType = AnnotationEditorParamsType;\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};\nexports.PermissionFlag = PermissionFlag;\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};\nexports.TextRenderingMode = TextRenderingMode;\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nexports.ImageKind = ImageKind;\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};\nexports.AnnotationType = AnnotationType;\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\"\n};\nexports.AnnotationStateModelType = AnnotationStateModelType;\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\"\n};\nexports.AnnotationMarkedState = AnnotationMarkedState;\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\"\n};\nexports.AnnotationReviewState = AnnotationReviewState;\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nexports.AnnotationReplyType = AnnotationReplyType;\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};\nexports.AnnotationFlag = AnnotationFlag;\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};\nexports.AnnotationFieldFlag = AnnotationFieldFlag;\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nexports.AnnotationBorderStyleType = AnnotationBorderStyleType;\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};\nexports.AnnotationActionEventType = AnnotationActionEventType;\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nexports.DocumentActionEventType = DocumentActionEventType;\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nexports.PageActionEventType = PageActionEventType;\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\"\n};\nexports.StreamType = StreamType;\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\"\n};\nexports.FontType = FontType;\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nexports.VerbosityLevel = VerbosityLevel;\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2\n};\nexports.CMapCompressionType = CMapCompressionType;\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 beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91\n};\nexports.OPS = OPS;\nconst UNSUPPORTED_FEATURES = {\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\"\n};\nexports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nexports.PasswordResponses = PasswordResponses;\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n\n default:\n return false;\n }\n}\n\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n\n try {\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {}\n\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false\n });\n return value;\n}\n\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n\n this.message = message;\n this.name = name;\n }\n\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\n\nexports.BaseException = BaseException;\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n\n}\n\nexports.PasswordException = PasswordException;\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n\n}\n\nexports.UnknownErrorException = UnknownErrorException;\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n\n}\n\nexports.InvalidPDFException = InvalidPDFException;\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n\n}\n\nexports.MissingPDFException = MissingPDFException;\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n\n}\n\nexports.UnexpectedResponseException = UnexpectedResponseException;\n\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n\n}\n\nexports.FormatError = FormatError;\n\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n\n}\n\nexports.AbortException = AbortException;\n\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes === null || bytes.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n\n const strBuf = [];\n\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\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n\n const length = str.length;\n const bytes = new Uint8Array(length);\n\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n\n return bytes;\n}\n\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n\n if (arr.byteLength !== undefined) {\n return arr.byteLength;\n }\n\n unreachable(\"Invalid argument for arrayByteLength\");\n}\n\nfunction arraysToBytes(arr) {\n const length = arr.length;\n\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n\n let resultLength = 0;\n\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n\n let pos = 0;\n const data = new Uint8Array(resultLength);\n\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n\n return data;\n}\n\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n\n for (const [key, value] of map) {\n obj[key] = value;\n }\n\n return obj;\n}\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}\n\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch (e) {\n return false;\n }\n}\n\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n\n}\n\nexports.FeatureTest = FeatureTest;\nconst hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, \"0\"));\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n static scaleMinMax(transform, minMax) {\n let temp;\n\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n\n minMax[0] *= transform[0];\n minMax[1] *= transform[0];\n\n if (transform[3] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n\n minMax[2] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n\n if (transform[1] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n\n minMax[2] *= transform[1];\n minMax[3] *= transform[1];\n\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n\n minMax[0] *= transform[2];\n minMax[1] *= transform[2];\n }\n\n minMax[0] += transform[4];\n minMax[1] += transform[4];\n minMax[2] += transform[5];\n minMax[3] += transform[5];\n }\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\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n }\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\n static apply3dTransform(m, v) {\n return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];\n }\n\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n static normalizeRect(rect) {\n const r = rect.slice(0);\n\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n\n return r;\n }\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\n if (xLow > xHigh) {\n return null;\n }\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\n if (yLow > yHigh) {\n return null;\n }\n\n return [xLow, yLow, xHigh, yHigh];\n }\n\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n\n t = -c / b;\n\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n\n continue;\n }\n\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n\n if (b2ac < 0) {\n continue;\n }\n\n t1 = (-b + sqrtb2ac) / (2 * a);\n\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n\n t2 = (-b - sqrtb2ac) / (2 * a);\n\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;\n bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])];\n }\n\n}\n\nexports.Util = Util;\nconst PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n\n const strBuf = [];\n\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff));\n }\n\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n\n return true;\n}\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}\n\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n }\n\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\n/***/ }),\n/* 2 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\n\nvar _is_node = __w_pdfjs_require__(3);\n\n;\n\n/***/ }),\n/* 3 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.isNodeJS = void 0;\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nexports.isNodeJS = isNodeJS;\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.build = exports.RenderTask = exports.PDFWorkerUtil = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0;\nexports.getDocument = getDocument;\nexports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;\nexports.version = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _annotation_storage = __w_pdfjs_require__(5);\n\nvar _display_utils = __w_pdfjs_require__(8);\n\nvar _font_loader = __w_pdfjs_require__(11);\n\nvar _canvas = __w_pdfjs_require__(12);\n\nvar _worker_options = __w_pdfjs_require__(15);\n\nvar _is_node = __w_pdfjs_require__(3);\n\nvar _message_handler = __w_pdfjs_require__(16);\n\nvar _metadata = __w_pdfjs_require__(17);\n\nvar _optional_content_config = __w_pdfjs_require__(18);\n\nvar _transport_stream = __w_pdfjs_require__(19);\n\nvar _xfa_text = __w_pdfjs_require__(20);\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nlet DefaultCanvasFactory = _display_utils.DOMCanvasFactory;\nexports.DefaultCanvasFactory = DefaultCanvasFactory;\nlet DefaultCMapReaderFactory = _display_utils.DOMCMapReaderFactory;\nexports.DefaultCMapReaderFactory = DefaultCMapReaderFactory;\nlet DefaultStandardFontDataFactory = _display_utils.DOMStandardFontDataFactory;\nexports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory;\n\nif (_is_node.isNodeJS) {\n const {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory\n } = __w_pdfjs_require__(21);\n\n exports.DefaultCanvasFactory = DefaultCanvasFactory = NodeCanvasFactory;\n exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory = NodeCMapReaderFactory;\n exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory = NodeStandardFontDataFactory;\n}\n\nlet createPDFNetworkStream;\n\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\nfunction getDocument(src) {\n const task = new PDFDocumentLoadingTask();\n let source;\n\n if (typeof src === \"string\" || src instanceof URL) {\n source = {\n url: src\n };\n } else if ((0, _util.isArrayBuffer)(src)) {\n source = {\n data: src\n };\n } else if (src instanceof PDFDataRangeTransport) {\n source = {\n range: src\n };\n } else {\n if (typeof src !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, \" + \"need either string, URL, TypedArray, or parameter object.\");\n }\n\n if (!src.url && !src.data && !src.range) {\n throw new Error(\"Invalid parameter object: need either .data, .range or .url\");\n }\n\n source = src;\n }\n\n const params = Object.create(null);\n let rangeTransport = null,\n worker = null;\n\n for (const key in source) {\n const value = source[key];\n\n switch (key) {\n case \"url\":\n if (typeof window !== \"undefined\") {\n try {\n params[key] = new URL(value, window.location).href;\n continue;\n } catch (ex) {\n (0, _util.warn)(`Cannot create valid URL: \"${ex}\".`);\n }\n } else if (typeof value === \"string\" || value instanceof URL) {\n params[key] = value.toString();\n continue;\n }\n\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n\n case \"range\":\n rangeTransport = value;\n continue;\n\n case \"worker\":\n worker = value;\n continue;\n\n case \"data\":\n if (_is_node.isNodeJS && typeof Buffer !== \"undefined\" && value instanceof Buffer) {\n params[key] = new Uint8Array(value);\n } else if (value instanceof Uint8Array) {\n break;\n } else if (typeof value === \"string\") {\n params[key] = (0, _util.stringToBytes)(value);\n } else if (typeof value === \"object\" && value !== null && !isNaN(value.length)) {\n params[key] = new Uint8Array(value);\n } else if ((0, _util.isArrayBuffer)(value)) {\n params[key] = new Uint8Array(value);\n } else {\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n }\n\n continue;\n }\n\n params[key] = value;\n }\n\n params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory;\n params.StandardFontDataFactory = params.StandardFontDataFactory || DefaultStandardFontDataFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n params.enableXfa = params.enableXfa === true;\n\n if (!Number.isInteger(params.rangeChunkSize) || params.rangeChunkSize < 1) {\n params.rangeChunkSize = DEFAULT_RANGE_CHUNK_SIZE;\n }\n\n if (typeof params.docBaseUrl !== \"string\" || (0, _display_utils.isDataScheme)(params.docBaseUrl)) {\n params.docBaseUrl = null;\n }\n\n if (!Number.isInteger(params.maxImageSize) || params.maxImageSize < -1) {\n params.maxImageSize = -1;\n }\n\n if (typeof params.cMapUrl !== \"string\") {\n params.cMapUrl = null;\n }\n\n if (typeof params.standardFontDataUrl !== \"string\") {\n params.standardFontDataUrl = null;\n }\n\n if (typeof params.useWorkerFetch !== \"boolean\") {\n params.useWorkerFetch = params.CMapReaderFactory === _display_utils.DOMCMapReaderFactory && params.StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory;\n }\n\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace = _is_node.isNodeJS;\n }\n\n if (typeof params.useSystemFonts !== \"boolean\") {\n params.useSystemFonts = !_is_node.isNodeJS && !params.disableFontFace;\n }\n\n if (typeof params.ownerDocument !== \"object\" || params.ownerDocument === null) {\n params.ownerDocument = globalThis.document;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n (0, _util.setVerbosityLevel)(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n verbosity: params.verbosity,\n port: _worker_options.GlobalWorkerOptions.workerPort\n };\n worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n task._worker = worker;\n }\n\n const docId = task.docId;\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId);\n\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n\n if (rangeTransport) {\n networkStream = new _transport_stream.PDFDataTransportStream({\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n contentDispositionFilename: params.contentDispositionFilename,\n disableRange: params.disableRange,\n disableStream: params.disableStream\n }, rangeTransport);\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream\n });\n }\n\n resolve(networkStream);\n });\n return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, params);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\n\nasync function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename;\n }\n\n const workerId = await worker.messageHandler.sendWithPromise(\"GetDocRequest\", {\n docId,\n apiVersion: '2.16.105',\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties,\n enableXfa: source.enableXfa,\n useSystemFonts: source.useSystemFonts,\n cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,\n standardFontDataUrl: source.useWorkerFetch ? source.standardFontDataUrl : null\n });\n\n if (source.data) {\n source.data = null;\n }\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n\n return workerId;\n}\n\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n\n constructor() {\n this._capability = (0, _util.createPromiseCapability)();\n this._transport = null;\n this._worker = null;\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n this.destroyed = false;\n this.onPassword = null;\n this.onProgress = null;\n this.onUnsupportedFeature = null;\n }\n\n get promise() {\n return this._capability.promise;\n }\n\n async destroy() {\n this.destroyed = true;\n await this._transport?.destroy();\n this._transport = null;\n\n if (this._worker) {\n this._worker.destroy();\n\n this._worker = null;\n }\n }\n\n}\n\nexports.PDFDocumentLoadingTask = PDFDocumentLoadingTask;\n\nclass PDFDataRangeTransport {\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 this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = (0, _util.createPromiseCapability)();\n }\n\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n requestDataRange(begin, end) {\n (0, _util.unreachable)(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n\n}\n\nexports.PDFDataRangeTransport = PDFDataRangeTransport;\n\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n Object.defineProperty(this, \"fingerprint\", {\n get() {\n (0, _display_utils.deprecated)(\"`PDFDocumentProxy.fingerprint`, \" + \"please use `PDFDocumentProxy.fingerprints` instead.\");\n return this.fingerprints[0];\n }\n\n });\n Object.defineProperty(this, \"getStats\", {\n value: async () => {\n (0, _display_utils.deprecated)(\"`PDFDocumentProxy.getStats`, \" + \"please use the `PDFDocumentProxy.stats`-getter instead.\");\n return this.stats || {\n streamTypes: {},\n fontTypes: {}\n };\n }\n });\n }\n\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n get stats() {\n return this._transport.stats;\n }\n\n get isPureXfa() {\n return !!this._transport._htmlForXfa;\n }\n\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n getOutline() {\n return this._transport.getOutline();\n }\n\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n getData() {\n return this._transport.getData();\n }\n\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n destroy() {\n return this.loadingTask.destroy();\n }\n\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n saveDocument() {\n if (this._transport.annotationStorage.size <= 0) {\n (0, _display_utils.deprecated)(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n\n return this._transport.saveDocument();\n }\n\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n\n}\n\nexports.PDFDocumentProxy = PDFDocumentProxy;\n\nclass PDFPageProxy {\n constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._ownerDocument = ownerDocument;\n this._transport = transport;\n this._stats = pdfBug ? new _display_utils.StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._bitmaps = new Set();\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this._intentStates = new Map();\n this._annotationPromises = new Map();\n this.destroyed = false;\n }\n\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n get ref() {\n return this._pageInfo.ref;\n }\n\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n get view() {\n return this._pageInfo.view;\n }\n\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new _display_utils.PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n\n let promise = this._annotationPromises.get(intentArgs.cacheKey);\n\n if (!promise) {\n promise = this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent);\n\n this._annotationPromises.set(intentArgs.cacheKey, promise);\n\n promise = promise.then(annotations => {\n for (const annotation of annotations) {\n if (annotation.titleObj !== undefined) {\n Object.defineProperty(annotation, \"title\", {\n get() {\n (0, _display_utils.deprecated)(\"`title`-property on annotation, please use `titleObj` instead.\");\n return annotation.titleObj.str;\n }\n\n });\n }\n\n if (annotation.contentsObj !== undefined) {\n Object.defineProperty(annotation, \"contents\", {\n get() {\n (0, _display_utils.deprecated)(\"`contents`-property on annotation, please use `contentsObj` instead.\");\n return annotation.contentsObj.str;\n }\n\n });\n }\n }\n\n return annotations;\n });\n }\n\n return promise;\n }\n\n getJSActions() {\n return this._jsActionsPromise ||= this._transport.getPageJSActions(this._pageIndex);\n }\n\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = _util.AnnotationMode.ENABLE,\n transform = null,\n imageLayer = null,\n canvasFactory = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null\n }) {\n if (arguments[0]?.renderInteractiveForms !== undefined) {\n (0, _display_utils.deprecated)(\"render no longer accepts the `renderInteractiveForms`-option, \" + \"please use the `annotationMode`-option instead.\");\n\n if (arguments[0].renderInteractiveForms === true && annotationMode === _util.AnnotationMode.ENABLE) {\n annotationMode = _util.AnnotationMode.ENABLE_FORMS;\n }\n }\n\n if (arguments[0]?.includeAnnotationStorage !== undefined) {\n (0, _display_utils.deprecated)(\"render no longer accepts the `includeAnnotationStorage`-option, \" + \"please use the `annotationMode`-option instead.\");\n\n if (arguments[0].includeAnnotationStorage === true && annotationMode === _util.AnnotationMode.ENABLE) {\n annotationMode = _util.AnnotationMode.ENABLE_STORAGE;\n }\n }\n\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage);\n\n this.pendingCleanup = false;\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n\n if (!intentState) {\n intentState = Object.create(null);\n\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({\n ownerDocument: this._ownerDocument\n });\n const intentPrint = !!(intentArgs.renderingIntent & _util.RenderingIntentFlag.PRINT);\n\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = (0, _util.createPromiseCapability)();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n if (this.cleanupAfterRender || intentPrint) {\n this.pendingCleanup = true;\n }\n\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n\n this._stats.timeEnd(\"Overall\");\n }\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\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.pendingCleanup) {\n complete();\n return;\n }\n\n if (this._stats) {\n this._stats.time(\"Rendering\");\n }\n\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n\n getOperatorList({\n intent = \"display\",\n annotationMode = _util.AnnotationMode.ENABLE,\n printAnnotationStorage = null\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, true);\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n\n if (!intentState) {\n intentState = Object.create(null);\n\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = (0, _util.createPromiseCapability)();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n\n this._pumpOperatorList(intentArgs);\n }\n\n return intentState.opListReadCapability.promise;\n }\n\n streamTextContent({\n disableCombineTextItems = false,\n includeMarkedContent = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n combineTextItems: disableCombineTextItems !== true,\n includeMarkedContent: includeMarkedContent === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n\n size(textContent) {\n return textContent.items.length;\n }\n\n });\n }\n\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => {\n return _xfa_text.XfaText.textContent(xfa);\n });\n }\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\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null)\n };\n pump();\n });\n }\n\n getStructTree() {\n return this._structTreePromise ||= this._transport.getStructTree(this._pageIndex);\n }\n\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n\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\n if (intentState.opListReadCapability) {\n continue;\n }\n\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n\n this.objs.clear();\n\n for (const bitmap of this._bitmaps) {\n bitmap.close();\n }\n\n this._bitmaps.clear();\n\n this._annotationPromises.clear();\n\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n\n cleanup(resetStats = false) {\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n\n _tryCleanup(resetStats = false) {\n if (!this.pendingCleanup) {\n return false;\n }\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\n this._intentStates.clear();\n\n this.objs.clear();\n\n this._annotationPromises.clear();\n\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n\n if (resetStats && this._stats) {\n this._stats = new _display_utils.StatTimer();\n }\n\n for (const bitmap of this._bitmaps) {\n bitmap.close();\n }\n\n this._bitmaps.clear();\n\n this.pendingCleanup = false;\n return true;\n }\n\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n\n if (!intentState) {\n return;\n }\n\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\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\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageMap\n }) {\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: annotationStorageMap\n });\n\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n\n if (this._transport.destroyed) {\n return;\n }\n\n this._renderPageChunk(value, intentState);\n\n pump();\n }, reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return;\n }\n\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n this._tryCleanup();\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n\n pump();\n }\n\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n\n if (reason instanceof _display_utils.RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n\n intentState.streamReader.cancel(new _util.AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return;\n }\n\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n\n break;\n }\n }\n\n this.cleanup();\n }\n\n get stats() {\n return this._stats;\n }\n\n}\n\nexports.PDFPageProxy = PDFPageProxy;\n\nclass LoopbackPort {\n constructor() {\n this._listeners = [];\n this._deferred = Promise.resolve();\n }\n\n postMessage(obj, transfers) {\n const event = {\n data: structuredClone(obj, transfers)\n };\n\n this._deferred.then(() => {\n for (const listener of this._listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n const i = this._listeners.indexOf(listener);\n\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners.length = 0;\n }\n\n}\n\nexports.LoopbackPort = LoopbackPort;\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0\n};\nexports.PDFWorkerUtil = PDFWorkerUtil;\n{\n if (_is_node.isNodeJS && typeof require === \"function\") {\n PDFWorkerUtil.isWorkerDisabled = true;\n PDFWorkerUtil.fallbackWorkerSrc = \"./pdf.worker.js\";\n } else if (typeof document === \"object\") {\n const pdfjsFilePath = document?.currentScript?.src;\n\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i, \".worker$1$2\");\n }\n }\n\n PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n let base;\n\n try {\n base = new URL(baseUrl);\n\n if (!base.origin || base.origin === \"null\") {\n return false;\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n const wrapper = `importScripts(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\n\nclass PDFWorker {\n static #workerPorts = new WeakMap();\n\n constructor({\n name = null,\n port = null,\n verbosity = (0, _util.getVerbosityLevel)()\n } = {}) {\n if (port && PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n this._readyCapability = (0, _util.createPromiseCapability)();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n PDFWorker.#workerPorts.set(port, this);\n\n this._initializeFromPort(port);\n\n return;\n }\n\n this._initialize();\n }\n\n get promise() {\n return this._readyCapability.promise;\n }\n\n get port() {\n return this._port;\n }\n\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", port);\n\n this._messageHandler.on(\"ready\", function () {});\n\n this._readyCapability.resolve();\n }\n\n _initialize() {\n if (!PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) {\n let {\n workerSrc\n } = PDFWorker;\n\n try {\n if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n\n const worker = new Worker(workerSrc);\n const messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", worker);\n\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n terminateEarly();\n }\n };\n\n worker.addEventListener(\"error\", onWorkerError);\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n } else {\n this._setupFakeWorker();\n\n messageHandler.destroy();\n worker.terminate();\n }\n });\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n\n try {\n sendTest();\n } catch (e) {\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n\n sendTest();\n return;\n } catch (e) {\n (0, _util.info)(\"The worker has been disabled.\");\n }\n }\n\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n (0, _util.warn)(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n\n return;\n }\n\n const port = new LoopbackPort();\n this._port = port;\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n const workerHandler = new _message_handler.MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n const messageHandler = new _message_handler.MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n\n this._readyCapability.resolve();\n\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }).catch(reason => {\n this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n\n destroy() {\n this.destroyed = true;\n\n if (this._webWorker) {\n this._webWorker.terminate();\n\n this._webWorker = null;\n }\n\n PDFWorker.#workerPorts.delete(this._port);\n this._port = null;\n\n if (this._messageHandler) {\n this._messageHandler.destroy();\n\n this._messageHandler = null;\n }\n }\n\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n\n if (this.#workerPorts.has(params.port)) {\n return this.#workerPorts.get(params.port);\n }\n\n return new PDFWorker(params);\n }\n\n static get workerSrc() {\n if (_worker_options.GlobalWorkerOptions.workerSrc) {\n return _worker_options.GlobalWorkerOptions.workerSrc;\n }\n\n if (PDFWorkerUtil.fallbackWorkerSrc !== null) {\n if (!_is_node.isNodeJS) {\n (0, _display_utils.deprecated)('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get _mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch (ex) {\n return null;\n }\n }\n\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n\n if (mainWorkerMessageHandler) {\n return mainWorkerMessageHandler;\n }\n\n if (_is_node.isNodeJS && typeof require === \"function\") {\n const worker = eval(\"require\")(this.workerSrc);\n return worker.WorkerMessageHandler;\n }\n\n await (0, _display_utils.loadScript)(this.workerSrc);\n return window.pdfjsWorker.WorkerMessageHandler;\n };\n\n return (0, _util.shadow)(this, \"_setupFakeWorkerGlobal\", loader());\n }\n\n}\n\nexports.PDFWorker = PDFWorker;\n{\n PDFWorker.getWorkerSrc = function () {\n (0, _display_utils.deprecated)(\"`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead.\");\n return this.workerSrc;\n };\n}\n\nclass WorkerTransport {\n #docStats = null;\n #pageCache = new Map();\n #pagePromises = new Map();\n #metadataPromise = null;\n\n constructor(messageHandler, loadingTask, networkStream, params) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new _font_loader.FontLoader({\n docId: loadingTask.docId,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this._params = params;\n\n if (!params.useWorkerFetch) {\n this.CMapReaderFactory = new params.CMapReaderFactory({\n baseUrl: params.cMapUrl,\n isCompressed: params.cMapPacked\n });\n this.StandardFontDataFactory = new params.StandardFontDataFactory({\n baseUrl: params.standardFontDataUrl\n });\n }\n\n this.destroyed = false;\n this.destroyCapability = null;\n this._passwordCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = (0, _util.createPromiseCapability)();\n this.setupMessageHandler();\n }\n\n get annotationStorage() {\n return (0, _util.shadow)(this, \"annotationStorage\", new _annotation_storage.AnnotationStorage());\n }\n\n get stats() {\n return this.#docStats;\n }\n\n getRenderingIntent(intent, annotationMode = _util.AnnotationMode.ENABLE, printAnnotationStorage = null, isOpList = false) {\n let renderingIntent = _util.RenderingIntentFlag.DISPLAY;\n let annotationMap = null;\n\n switch (intent) {\n case \"any\":\n renderingIntent = _util.RenderingIntentFlag.ANY;\n break;\n\n case \"display\":\n break;\n\n case \"print\":\n renderingIntent = _util.RenderingIntentFlag.PRINT;\n break;\n\n default:\n (0, _util.warn)(`getRenderingIntent - invalid intent: ${intent}`);\n }\n\n switch (annotationMode) {\n case _util.AnnotationMode.DISABLE:\n renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n\n case _util.AnnotationMode.ENABLE:\n break;\n\n case _util.AnnotationMode.ENABLE_FORMS:\n renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n\n case _util.AnnotationMode.ENABLE_STORAGE:\n renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE;\n const annotationStorage = renderingIntent & _util.RenderingIntentFlag.PRINT && printAnnotationStorage instanceof _annotation_storage.PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n annotationMap = annotationStorage.serializable;\n break;\n\n default:\n (0, _util.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n\n if (isOpList) {\n renderingIntent += _util.RenderingIntentFlag.OPLIST;\n }\n\n return {\n renderingIntent,\n cacheKey: `${renderingIntent}_${_annotation_storage.AnnotationStorage.getHash(annotationMap)}`,\n annotationStorageMap: annotationMap\n };\n }\n\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = (0, _util.createPromiseCapability)();\n\n if (this._passwordCapability) {\n this._passwordCapability.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n }\n\n const waitOn = [];\n\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n\n this.#pageCache.clear();\n this.#pagePromises.clear();\n\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\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.#metadataPromise = null;\n this._getFieldObjectsPromise = null;\n this._hasJSActionsPromise = null;\n\n if (this._networkStream) {\n this._networkStream.cancelAllRequests(new _util.AbortException(\"Worker was terminated.\"));\n }\n\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n (0, _util.assert)(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\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\n (0, _util.assert)((0, _util.isArrayBuffer)(value), \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = (0, _util.createPromiseCapability)();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n\n fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength\n });\n }, headersCapability.reject);\n return headersCapability.promise;\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n (0, _util.assert)(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n\n if (!rangeReader) {\n sink.close();\n return;\n }\n\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n\n (0, _util.assert)((0, _util.isArrayBuffer)(value), \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\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\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n\n switch (ex.name) {\n case \"PasswordException\":\n reason = new _util.PasswordException(ex.message, ex.code);\n break;\n\n case \"InvalidPDFException\":\n reason = new _util.InvalidPDFException(ex.message);\n break;\n\n case \"MissingPDFException\":\n reason = new _util.MissingPDFException(ex.message);\n break;\n\n case \"UnexpectedResponseException\":\n reason = new _util.UnexpectedResponseException(ex.message, ex.status);\n break;\n\n case \"UnknownErrorException\":\n reason = new _util.UnknownErrorException(ex.message, ex.details);\n break;\n\n default:\n (0, _util.unreachable)(\"DocException - expected a valid Error.\");\n }\n\n loadingTask._capability.reject(reason);\n });\n messageHandler.on(\"PasswordRequest\", exception => {\n this._passwordCapability = (0, _util.createPromiseCapability)();\n\n if (loadingTask.onPassword) {\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\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this._passwordCapability.reject(ex);\n }\n } else {\n this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));\n }\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\n const page = this.#pageCache.get(data.pageIndex);\n\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return;\n }\n\n if (this.commonObjs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Font\":\n const params = this._params;\n\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n (0, _util.warn)(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n\n let fontRegistry = null;\n\n if (params.pdfBug && globalThis.FontInspector?.enabled) {\n fontRegistry = {\n registerFont(font, url) {\n globalThis.FontInspector.fontAdded(font, url);\n }\n\n };\n }\n\n const font = new _font_loader.FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n fontRegistry\n });\n this.fontLoader.bind(font).catch(reason => {\n return messageHandler.sendWithPromise(\"FontFallback\", {\n id\n });\n }).finally(() => {\n if (!params.fontExtraProperties && font.data) {\n font.data = null;\n }\n\n this.commonObjs.resolve(id, font);\n });\n break;\n\n case \"FontPath\":\n case \"Image\":\n this.commonObjs.resolve(id, exportedData);\n break;\n\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n\n const pageProxy = this.#pageCache.get(pageIndex);\n\n if (pageProxy.objs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n const MAX_IMAGE_SIZE_TO_STORE = 8000000;\n\n if (imageData) {\n let length;\n\n if (imageData.bitmap) {\n const {\n bitmap,\n width,\n height\n } = imageData;\n length = width * height * 4;\n\n pageProxy._bitmaps.add(bitmap);\n } else {\n length = imageData.data?.length || 0;\n }\n\n if (length > MAX_IMAGE_SIZE_TO_STORE) {\n pageProxy.cleanupAfterRender = true;\n }\n }\n\n break;\n\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n\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\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"DocStats\", data => {\n if (this.destroyed) {\n return;\n }\n\n this.#docStats = Object.freeze({\n streamTypes: Object.freeze(data.streamTypes),\n fontTypes: Object.freeze(data.fontTypes)\n });\n });\n messageHandler.on(\"UnsupportedFeature\", this._onUnsupportedFeature.bind(this));\n messageHandler.on(\"FetchBuiltInCMap\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n\n if (!this.CMapReaderFactory) {\n return Promise.reject(new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"));\n }\n\n return this.CMapReaderFactory.fetch(data);\n });\n messageHandler.on(\"FetchStandardFontData\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n\n if (!this.StandardFontDataFactory) {\n return Promise.reject(new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"));\n }\n\n return this.StandardFontDataFactory.fetch(data);\n });\n }\n\n _onUnsupportedFeature({\n featureId\n }) {\n if (this.destroyed) {\n return;\n }\n\n this.loadingTask.onUnsupportedFeature?.(featureId);\n }\n\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\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\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n\n if (cachedPromise) {\n return cachedPromise;\n }\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\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.ownerDocument, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n getPageIndex(ref) {\n if (typeof ref !== \"object\" || ref === null || !Number.isInteger(ref.num) || ref.num < 0 || !Number.isInteger(ref.gen) || ref.gen < 0) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n\n saveDocument() {\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: this.annotationStorage.serializable,\n filename: this._fullReader?.filename ?? null\n }).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n\n getFieldObjects() {\n return this._getFieldObjectsPromise ||= this.messageHandler.sendWithPromise(\"GetFieldObjects\", null);\n }\n\n hasJSActions() {\n return this._hasJSActionsPromise ||= this.messageHandler.sendWithPromise(\"HasJSActions\", null);\n }\n\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n\n getJavaScript() {\n return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n }\n\n getDocJSActions() {\n return this.messageHandler.sendWithPromise(\"GetDocJSActions\", null);\n }\n\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n\n getOptionalContentConfig() {\n return this.messageHandler.sendWithPromise(\"GetOptionalContentConfig\", null).then(results => {\n return new _optional_content_config.OptionalContentConfig(results);\n });\n }\n\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n\n getMetadata() {\n return this.#metadataPromise ||= this.messageHandler.sendWithPromise(\"GetMetadata\", null).then(results => {\n return {\n info: results[0],\n metadata: results[1] ? new _metadata.Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null\n };\n });\n }\n\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n\n async startCleanup(keepLoadedFonts = false) {\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n if (this.destroyed) {\n return;\n }\n\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n\n this.commonObjs.clear();\n\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n\n this.#metadataPromise = null;\n this._getFieldObjectsPromise = null;\n this._hasJSActionsPromise = null;\n }\n\n get loadingParams() {\n const params = this._params;\n return (0, _util.shadow)(this, \"loadingParams\", {\n disableAutoFetch: params.disableAutoFetch,\n enableXfa: params.enableXfa\n });\n }\n\n}\n\nclass PDFObjects {\n #objs = Object.create(null);\n\n #ensureObj(objId) {\n const obj = this.#objs[objId];\n\n if (obj) {\n return obj;\n }\n\n return this.#objs[objId] = {\n capability: (0, _util.createPromiseCapability)(),\n data: null\n };\n }\n\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.capability.promise.then(() => callback(obj.data));\n return null;\n }\n\n const obj = this.#objs[objId];\n\n if (!obj?.capability.settled) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n\n return obj.data;\n }\n\n has(objId) {\n const obj = this.#objs[objId];\n return obj?.capability.settled || false;\n }\n\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.capability.resolve();\n }\n\n clear() {\n this.#objs = Object.create(null);\n }\n\n}\n\nclass RenderTask {\n #internalRenderTask = null;\n\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n this.onContinue = null;\n }\n\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n\n cancel() {\n this.#internalRenderTask.cancel();\n }\n\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n\n if (!separateAnnots) {\n return false;\n }\n\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n\n}\n\nexports.RenderTask = RenderTask;\n\nclass InternalRenderTask {\n static #canvasInUse = new WeakSet();\n\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\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._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 = (0, _util.createPromiseCapability)();\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\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\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\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\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\n const {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background\n } = this.params;\n this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, imageLayer, optionalContentConfig, 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\n if (this.graphicsReadyCallback) {\n this.graphicsReadyCallback();\n }\n }\n\n cancel(error = null) {\n this.running = false;\n this.cancelled = true;\n\n if (this.gfx) {\n this.gfx.endDrawing();\n }\n\n if (this._canvas) {\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n }\n\n this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, \"canvas\"));\n }\n\n operatorListChanged() {\n if (!this.graphicsReady) {\n if (!this.graphicsReadyCallback) {\n this.graphicsReadyCallback = this._continueBound;\n }\n\n return;\n }\n\n if (this.stepper) {\n this.stepper.updateOperatorList(this.operatorList);\n }\n\n if (this.running) {\n return;\n }\n\n this._continue();\n }\n\n _continue() {\n this.running = true;\n\n if (this.cancelled) {\n return;\n }\n\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n\n async _next() {\n if (this.cancelled) {\n return;\n }\n\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n\n if (this._canvas) {\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n }\n\n this.callback();\n }\n }\n }\n\n}\n\nconst version = '2.16.105';\nexports.version = version;\nconst build = '172ccdbe5';\nexports.build = build;\n\n/***/ }),\n/* 5 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PrintAnnotationStorage = exports.AnnotationStorage = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _editor = __w_pdfjs_require__(6);\n\nvar _murmurhash = __w_pdfjs_require__(10);\n\nclass AnnotationStorage {\n constructor() {\n this._storage = new Map();\n this._modified = false;\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n\n getValue(key, defaultValue) {\n const value = this._storage.get(key);\n\n if (value === undefined) {\n return defaultValue;\n }\n\n return Object.assign(defaultValue, value);\n }\n\n getRawValue(key) {\n return this._storage.get(key);\n }\n\n remove(key) {\n this._storage.delete(key);\n\n if (this._storage.size === 0) {\n this.resetModified();\n }\n\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this._storage.values()) {\n if (value instanceof _editor.AnnotationEditor) {\n return;\n }\n }\n\n this.onAnnotationEditor(null);\n }\n }\n\n setValue(key, value) {\n const obj = this._storage.get(key);\n\n let modified = false;\n\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\n this._storage.set(key, value);\n }\n\n if (modified) {\n this.#setModified();\n }\n\n if (value instanceof _editor.AnnotationEditor && typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n\n has(key) {\n return this._storage.has(key);\n }\n\n getAll() {\n return this._storage.size > 0 ? (0, _util.objectFromMap)(this._storage) : null;\n }\n\n get size() {\n return this._storage.size;\n }\n\n #setModified() {\n if (!this._modified) {\n this._modified = true;\n\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n\n resetModified() {\n if (this._modified) {\n this._modified = false;\n\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n\n get print() {\n return new PrintAnnotationStorage(this);\n }\n\n get serializable() {\n if (this._storage.size === 0) {\n return null;\n }\n\n const clone = new Map();\n\n for (const [key, val] of this._storage) {\n const serialized = val instanceof _editor.AnnotationEditor ? val.serialize() : val;\n\n if (serialized) {\n clone.set(key, serialized);\n }\n }\n\n return clone;\n }\n\n static getHash(map) {\n if (!map) {\n return \"\";\n }\n\n const hash = new _murmurhash.MurmurHash3_64();\n\n for (const [key, val] of map) {\n hash.update(`${key}:${JSON.stringify(val)}`);\n }\n\n return hash.hexdigest();\n }\n\n}\n\nexports.AnnotationStorage = AnnotationStorage;\n\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable = null;\n\n constructor(parent) {\n super();\n this.#serializable = structuredClone(parent.serializable);\n }\n\n get print() {\n (0, _util.unreachable)(\"Should not call PrintAnnotationStorage.print\");\n }\n\n get serializable() {\n return this.#serializable;\n }\n\n}\n\nexports.PrintAnnotationStorage = PrintAnnotationStorage;\n\n/***/ }),\n/* 6 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.AnnotationEditor = void 0;\n\nvar _tools = __w_pdfjs_require__(7);\n\nvar _util = __w_pdfjs_require__(1);\n\nclass AnnotationEditor {\n #boundFocusin = this.focusin.bind(this);\n #boundFocusout = this.focusout.bind(this);\n #hasBeenSelected = false;\n #isEditing = false;\n #isInEditMode = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _colorManager = new _tools.ColorManager();\n static _zIndex = 1;\n\n constructor(parameters) {\n if (this.constructor === AnnotationEditor) {\n (0, _util.unreachable)(\"Cannot initialize AnnotationEditor.\");\n }\n\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 const [width, height] = this.parent.viewportBaseDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.rotation = this.parent.viewport.rotation;\n this.isAttachedToDOM = false;\n }\n\n static get _defaultLineColor() {\n return (0, _util.shadow)(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n\n focusin(event) {\n if (!this.#hasBeenSelected) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenSelected = false;\n }\n }\n\n focusout(event) {\n if (!this.isAttachedToDOM) {\n return;\n }\n\n const target = event.relatedTarget;\n\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n\n event.preventDefault();\n\n if (!this.parent.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n\n commit() {\n this.parent.addToAnnotationStorage(this);\n }\n\n dragstart(event) {\n const rect = this.parent.div.getBoundingClientRect();\n this.startX = event.clientX - rect.x;\n this.startY = event.clientY - rect.y;\n event.dataTransfer.setData(\"text/plain\", this.id);\n event.dataTransfer.effectAllowed = \"move\";\n }\n\n setAt(x, y, tx, ty) {\n const [width, height] = this.parent.viewportBaseDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.div.style.left = `${100 * this.x}%`;\n this.div.style.top = `${100 * this.y}%`;\n }\n\n translate(x, y) {\n const [width, height] = this.parent.viewportBaseDimensions;\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this.div.style.left = `${100 * this.x}%`;\n this.div.style.top = `${100 * this.y}%`;\n }\n\n screenToPageTranslation(x, y) {\n const {\n rotation\n } = this.parent.viewport;\n\n switch (rotation) {\n case 90:\n return [y, -x];\n\n case 180:\n return [-x, -y];\n\n case 270:\n return [-y, x];\n\n default:\n return [x, y];\n }\n }\n\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n this.div.style.width = `${100 * width / parentWidth}%`;\n this.div.style.height = `${100 * height / parentHeight}%`;\n }\n\n getInitialTranslation() {\n return [0, 0];\n }\n\n render() {\n this.div = document.createElement(\"div\");\n this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n this.div.className = this.name;\n this.div.setAttribute(\"id\", this.id);\n this.div.setAttribute(\"tabIndex\", 0);\n this.setInForeground();\n this.div.addEventListener(\"focusin\", this.#boundFocusin);\n this.div.addEventListener(\"focusout\", this.#boundFocusout);\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n (0, _tools.bindEvents)(this, this.div, [\"dragstart\", \"pointerdown\"]);\n return this.div;\n }\n\n pointerdown(event) {\n const isMac = _tools.KeyboardManager.platform.isMac;\n\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n\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 this.#hasBeenSelected = true;\n }\n\n getRect(tx, ty) {\n const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n const [pageWidth, pageHeight] = this.parent.pageDimensions;\n const shiftX = pageWidth * tx / parentWidth;\n const shiftY = pageHeight * ty / parentHeight;\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\n switch (this.rotation) {\n case 0:\n return [x + shiftX, pageHeight - y - shiftY - height, x + shiftX + width, pageHeight - y - shiftY];\n\n case 90:\n return [x + shiftY, pageHeight - y + shiftX, x + shiftY + height, pageHeight - y + shiftX + width];\n\n case 180:\n return [x - shiftX - width, pageHeight - y + shiftY, x - shiftX, pageHeight - y + shiftY + height];\n\n case 270:\n return [x - shiftY - height, pageHeight - y - shiftX - width, x - shiftY, pageHeight - y - shiftX];\n\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n\n case 90:\n return [x1, pageHeight - y1, height, width];\n\n case 180:\n return [x2, pageHeight - y1, width, height];\n\n case 270:\n return [x2, pageHeight - y2, height, width];\n\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n\n onceAdded() {}\n\n isEmpty() {\n return false;\n }\n\n enableEditMode() {\n this.#isInEditMode = true;\n }\n\n disableEditMode() {\n this.#isInEditMode = false;\n }\n\n isInEditMode() {\n return this.#isInEditMode;\n }\n\n shouldGetKeyboardEvents() {\n return false;\n }\n\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n\n rebuild() {\n this.div?.addEventListener(\"focusin\", this.#boundFocusin);\n }\n\n serialize() {\n (0, _util.unreachable)(\"An editor must be serializable\");\n }\n\n static deserialize(data, parent) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId()\n });\n editor.rotation = data.rotation;\n const [pageWidth, pageHeight] = parent.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\n remove() {\n this.div.removeEventListener(\"focusin\", this.#boundFocusin);\n this.div.removeEventListener(\"focusout\", this.#boundFocusout);\n\n if (!this.isEmpty()) {\n this.commit();\n }\n\n this.parent.remove(this);\n }\n\n select() {\n this.div?.classList.add(\"selectedEditor\");\n }\n\n unselect() {\n this.div?.classList.remove(\"selectedEditor\");\n }\n\n updateParams(type, value) {}\n\n disableEditing() {}\n\n enableEditing() {}\n\n get propertiesToUpdate() {\n return {};\n }\n\n get contentDiv() {\n return this.div;\n }\n\n get isEditing() {\n return this.#isEditing;\n }\n\n set isEditing(value) {\n this.#isEditing = value;\n\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n\n}\n\nexports.AnnotationEditor = AnnotationEditor;\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.KeyboardManager = exports.CommandManager = exports.ColorManager = exports.AnnotationEditorUIManager = void 0;\nexports.bindEvents = bindEvents;\nexports.opacityToHex = opacityToHex;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _display_utils = __w_pdfjs_require__(8);\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\n\nfunction opacityToHex(opacity) {\n return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, \"0\");\n}\n\nclass IdManager {\n #id = 0;\n\n getId() {\n return `${_util.AnnotationEditorPrefix}${this.#id++}`;\n }\n\n}\n\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n\n add({\n cmd,\n undo,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n\n if (this.#locked) {\n return;\n }\n\n const save = {\n cmd,\n undo,\n type\n };\n\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n\n this.#commands[this.#position] = save;\n return;\n }\n\n const next = this.#position + 1;\n\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n\n this.#commands.push(save);\n }\n\n undo() {\n if (this.#position === -1) {\n return;\n }\n\n this.#locked = true;\n this.#commands[this.#position].undo();\n this.#locked = false;\n this.#position -= 1;\n }\n\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n this.#commands[this.#position].cmd();\n this.#locked = false;\n }\n }\n\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n\n destroy() {\n this.#commands = null;\n }\n\n}\n\nexports.CommandManager = CommandManager;\n\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const isMac = KeyboardManager.platform.isMac;\n\n for (const [keys, callback] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), callback);\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, callback);\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n\n static get platform() {\n const platform = typeof navigator !== \"undefined\" ? navigator.platform : \"\";\n return (0, _util.shadow)(this, \"platform\", {\n isWin: platform.includes(\"Win\"),\n isMac: platform.includes(\"Mac\")\n });\n }\n\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n\n const callback = this.callbacks.get(this.#serialize(event));\n\n if (!callback) {\n return;\n }\n\n callback.bind(self)();\n event.stopPropagation();\n event.preventDefault();\n }\n\n}\n\nexports.KeyboardManager = KeyboardManager;\n\nclass ClipboardManager {\n #elements = null;\n\n copy(element) {\n if (!element) {\n return;\n }\n\n if (Array.isArray(element)) {\n this.#elements = element.map(el => el.serialize());\n } else {\n this.#elements = [element.serialize()];\n }\n\n this.#elements = this.#elements.filter(el => !!el);\n\n if (this.#elements.length === 0) {\n this.#elements = null;\n }\n }\n\n paste() {\n return this.#elements;\n }\n\n isEmpty() {\n return this.#elements === null;\n }\n\n destroy() {\n this.#elements = null;\n }\n\n}\n\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n (0, _display_utils.getColorValues)(colors);\n return (0, _util.shadow)(this, \"_colors\", colors);\n }\n\n convert(color) {\n const rgb = (0, _display_utils.getRGB)(color);\n\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\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\n return rgb;\n }\n\n getHexCode(name) {\n const rgb = this._colors.get(name);\n\n if (!rgb) {\n return name;\n }\n\n return _util.Util.makeHexColor(...rgb);\n }\n\n}\n\nexports.ColorManager = ColorManager;\n\nclass AnnotationEditorUIManager {\n #activeEditor = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #clipboardManager = new ClipboardManager();\n #commandManager = new CommandManager();\n #currentPageIndex = 0;\n #editorTypes = null;\n #eventBus = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #mode = _util.AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #boundKeydown = this.keydown.bind(this);\n #boundOnEditingAction = this.onEditingAction.bind(this);\n #boundOnPageChanging = this.onPageChanging.bind(this);\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasEmptyClipboard: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false\n };\n #container = null;\n static _keyboardManager = new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], AnnotationEditorUIManager.prototype.selectAll], [[\"ctrl+c\", \"mac+meta+c\"], AnnotationEditorUIManager.prototype.copy], [[\"ctrl+v\", \"mac+meta+v\"], AnnotationEditorUIManager.prototype.paste], [[\"ctrl+x\", \"mac+meta+x\"], AnnotationEditorUIManager.prototype.cut], [[\"ctrl+z\", \"mac+meta+z\"], AnnotationEditorUIManager.prototype.undo], [[\"ctrl+y\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], AnnotationEditorUIManager.prototype.redo], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\"], AnnotationEditorUIManager.prototype.delete], [[\"Escape\", \"mac+Escape\"], AnnotationEditorUIManager.prototype.unselectAll]]);\n\n constructor(container, eventBus) {\n this.#container = container;\n this.#eventBus = eventBus;\n\n this.#eventBus._on(\"editingaction\", this.#boundOnEditingAction);\n\n this.#eventBus._on(\"pagechanging\", this.#boundOnPageChanging);\n }\n\n destroy() {\n this.#removeKeyboardManager();\n\n this.#eventBus._off(\"editingaction\", this.#boundOnEditingAction);\n\n this.#eventBus._off(\"pagechanging\", this.#boundOnPageChanging);\n\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#clipboardManager.destroy();\n this.#commandManager.destroy();\n }\n\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n\n focusMainContainer() {\n this.#container.focus();\n }\n\n #addKeyboardManager() {\n this.#container.addEventListener(\"keydown\", this.#boundKeydown);\n }\n\n #removeKeyboardManager() {\n this.#container.removeEventListener(\"keydown\", this.#boundKeydown);\n }\n\n keydown(event) {\n if (!this.getActive()?.shouldGetKeyboardEvents()) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n\n onEditingAction(details) {\n if ([\"undo\", \"redo\", \"cut\", \"copy\", \"paste\", \"delete\", \"selectAll\"].includes(details.name)) {\n this[details.name]();\n }\n }\n\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n\n if (hasChanged) {\n this.#eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n }\n }\n\n #dispatchUpdateUI(details) {\n this.#eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addKeyboardManager();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== _util.AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false,\n hasEmptyClipboard: this.#clipboardManager.isEmpty()\n });\n } else {\n this.#removeKeyboardManager();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n }\n }\n\n registerEditorTypes(types) {\n this.#editorTypes = types;\n\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n\n getId() {\n return this.#idManager.getId();\n }\n\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n\n updateMode(mode) {\n this.#mode = mode;\n\n if (mode === _util.AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n } else {\n this.setEditingState(true);\n this.#enableAll();\n\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n }\n }\n\n updateToolbar(mode) {\n if (mode === this.#mode) {\n return;\n }\n\n this.#eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode\n });\n }\n\n updateParams(type, value) {\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n\n #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n\n for (const layer of this.#allLayers.values()) {\n layer.enable();\n }\n }\n }\n\n #disableAll() {\n this.unselectAll();\n\n if (this.#isEnabled) {\n this.#isEnabled = false;\n\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n }\n }\n\n getEditors(pageIndex) {\n const editors = [];\n\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n\n return editors;\n }\n\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n\n removeEditor(editor) {\n this.#allEditors.delete(editor.id);\n this.unselect(editor);\n }\n\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n }\n }\n\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n\n this.#activeEditor = editor;\n\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\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\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n\n setSelected(editor) {\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\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\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n }\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\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n\n return false;\n }\n\n delete() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n }\n\n if (!this.hasSelection) {\n return;\n }\n\n const editors = [...this.#selectedEditors];\n\n const cmd = () => {\n for (const editor of editors) {\n editor.remove();\n }\n };\n\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n\n copy() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n }\n\n if (this.hasSelection) {\n const editors = [];\n\n for (const editor of this.#selectedEditors) {\n if (!editor.isEmpty()) {\n editors.push(editor);\n }\n }\n\n if (editors.length === 0) {\n return;\n }\n\n this.#clipboardManager.copy(editors);\n this.#dispatchUpdateStates({\n hasEmptyClipboard: false\n });\n }\n }\n\n cut() {\n this.copy();\n this.delete();\n }\n\n paste() {\n if (this.#clipboardManager.isEmpty()) {\n return;\n }\n\n this.unselectAll();\n const layer = this.#allLayers.get(this.#currentPageIndex);\n const newEditors = this.#clipboardManager.paste().map(data => layer.deserialize(data));\n\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n\n this.#selectEditors(newEditors);\n };\n\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n\n #selectEditors(editors) {\n this.#selectedEditors.clear();\n\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n\n this.#selectedEditors.add(editor);\n editor.select();\n }\n\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n\n this.#selectEditors(this.#allEditors.values());\n }\n\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n return;\n }\n\n if (this.#selectEditors.size === 0) {\n return;\n }\n\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n\n getActive() {\n return this.#activeEditor;\n }\n\n getMode() {\n return this.#mode;\n }\n\n}\n\nexports.AnnotationEditorUIManager = AnnotationEditorUIManager;\n\n/***/ }),\n/* 8 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.StatTimer = exports.RenderingCancelledException = exports.PixelsPerInch = exports.PageViewport = exports.PDFDateString = exports.DOMStandardFontDataFactory = exports.DOMSVGFactory = exports.DOMCanvasFactory = exports.DOMCMapReaderFactory = exports.AnnotationPrefix = void 0;\nexports.deprecated = deprecated;\nexports.getColorValues = getColorValues;\nexports.getCurrentTransform = getCurrentTransform;\nexports.getCurrentTransformInverse = getCurrentTransformInverse;\nexports.getFilenameFromUrl = getFilenameFromUrl;\nexports.getPdfFilenameFromUrl = getPdfFilenameFromUrl;\nexports.getRGB = getRGB;\nexports.getXfaPageViewport = getXfaPageViewport;\nexports.isDataScheme = isDataScheme;\nexports.isPdfFile = isPdfFile;\nexports.isValidFetchUrl = isValidFetchUrl;\nexports.loadScript = loadScript;\n\nvar _base_factory = __w_pdfjs_require__(9);\n\nvar _util = __w_pdfjs_require__(1);\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nexports.AnnotationPrefix = AnnotationPrefix;\n\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\n\nexports.PixelsPerInch = PixelsPerInch;\n\nclass DOMCanvasFactory extends _base_factory.BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document\n } = {}) {\n super();\n this._document = ownerDocument;\n }\n\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n\n}\n\nexports.DOMCanvasFactory = DOMCanvasFactory;\n\nasync function fetchData(url, asTypedArray = false) {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n\n return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await response.text());\n }\n\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n\n if (asTypedArray) {\n request.responseType = \"arraybuffer\";\n }\n\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n\n if (request.status === 200 || request.status === 0) {\n let data;\n\n if (asTypedArray && request.response) {\n data = new Uint8Array(request.response);\n } else if (!asTypedArray && request.responseText) {\n data = (0, _util.stringToBytes)(request.responseText);\n }\n\n if (data) {\n resolve(data);\n return;\n }\n }\n\n reject(new Error(request.statusText));\n };\n\n request.send(null);\n });\n}\n\nclass DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url, this.isCompressed).then(data => {\n return {\n cMapData: data,\n compressionType\n };\n });\n }\n\n}\n\nexports.DOMCMapReaderFactory = DOMCMapReaderFactory;\n\nclass DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url, true);\n }\n\n}\n\nexports.DOMStandardFontDataFactory = DOMStandardFontDataFactory;\n\nclass DOMSVGFactory extends _base_factory.BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n\n}\n\nexports.DOMSVGFactory = DOMSVGFactory;\n\nclass PageViewport {\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n 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\n if (rotation < 0) {\n rotation += 360;\n }\n\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n\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\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n\n convertToViewportPoint(x, y) {\n return _util.Util.applyTransform([x, y], this.transform);\n }\n\n convertToViewportRectangle(rect) {\n const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);\n\n const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);\n\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n\n convertToPdfPoint(x, y) {\n return _util.Util.applyInverseTransform([x, y], this.transform);\n }\n\n}\n\nexports.PageViewport = PageViewport;\n\nclass RenderingCancelledException extends _util.BaseException {\n constructor(msg, type) {\n super(msg, \"RenderingCancelledException\");\n this.type = type;\n }\n\n}\n\nexports.RenderingCancelledException = RenderingCancelledException;\n\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\n\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\nfunction getFilenameFromUrl(url) {\n const anchor = url.indexOf(\"#\");\n const query = url.indexOf(\"?\");\n const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);\n return url.substring(url.lastIndexOf(\"/\", end) + 1, end);\n}\n\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n\n if (isDataScheme(url)) {\n (0, _util.warn)('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\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\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n\n if (suggestedFilename.includes(\"%\")) {\n try {\n suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n } catch (ex) {}\n }\n }\n\n return suggestedFilename || defaultFilename;\n}\n\nclass StatTimer {\n constructor() {\n this.started = Object.create(null);\n this.times = [];\n }\n\n time(name) {\n if (name in this.started) {\n (0, _util.warn)(`Timer is already running for ${name}`);\n }\n\n this.started[name] = Date.now();\n }\n\n timeEnd(name) {\n if (!(name in this.started)) {\n (0, _util.warn)(`Timer has not been started for ${name}`);\n }\n\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n\n toString() {\n const outBuf = [];\n let longest = 0;\n\n for (const time of this.times) {\n const name = time.name;\n\n if (name.length > longest) {\n longest = name.length;\n }\n }\n\n for (const time of this.times) {\n const duration = time.end - time.start;\n outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\\n`);\n }\n\n return outBuf.join(\"\");\n }\n\n}\n\nexports.StatTimer = StatTimer;\n\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const {\n protocol\n } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n return protocol === \"http:\" || protocol === \"https:\";\n } catch (ex) {\n return false;\n }\n}\n\nfunction loadScript(src, removeScriptElement = false) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n\n script.onload = function (evt) {\n if (removeScriptElement) {\n script.remove();\n }\n\n resolve(evt);\n };\n\n script.onerror = function () {\n reject(new Error(`Cannot load script at: ${script.src}`));\n };\n\n (document.head || document.documentElement).append(script);\n });\n}\n\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n\n if (!pdfDateStringRegex) {\n pdfDateStringRegex = new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n }\n\n const matches = pdfDateStringRegex.exec(input);\n\n if (!matches) {\n return null;\n }\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\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n\n}\n\nexports.PDFDateString = PDFDateString;\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 scale,\n rotation\n });\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\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n\n (0, _util.warn)(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\n\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n document.body.append(span);\n\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\n span.remove();\n}\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}\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}\n\n/***/ }),\n/* 9 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n\n const canvas = this._createCanvas(width, height);\n\n return {\n canvas,\n context: canvas.getContext(\"2d\")\n };\n }\n\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n\n _createCanvas(width, height) {\n (0, _util.unreachable)(\"Abstract method `_createCanvas` called.\");\n }\n\n}\n\nexports.BaseCanvasFactory = BaseCanvasFactory;\n\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = false\n }) {\n if (this.constructor === BaseCMapReaderFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error('The CMap \"baseUrl\" parameter must be specified, ensure that ' + 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.');\n }\n\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n\n _fetchData(url, compressionType) {\n (0, _util.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n\n}\n\nexports.BaseCMapReaderFactory = BaseCMapReaderFactory;\n\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n if (this.constructor === BaseStandardFontDataFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseStandardFontDataFactory.\");\n }\n\n this.baseUrl = baseUrl;\n }\n\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error('The standard font \"baseUrl\" parameter must be specified, ensure that ' + 'the \"standardFontDataUrl\" API parameter is provided.');\n }\n\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n\n const url = `${this.baseUrl}${filename}`;\n return this._fetchData(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n\n _fetchData(url) {\n (0, _util.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n\n}\n\nexports.BaseStandardFontDataFactory = BaseStandardFontDataFactory;\n\nclass BaseSVGFactory {\n constructor() {\n if (this.constructor === BaseSVGFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseSVGFactory.\");\n }\n }\n\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n\n const svg = this._createSVG(\"svg:svg\");\n\n svg.setAttribute(\"version\", \"1.1\");\n\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n\n return this._createSVG(type);\n }\n\n _createSVG(type) {\n (0, _util.unreachable)(\"Abstract method `_createSVG` called.\");\n }\n\n}\n\nexports.BaseSVGFactory = BaseSVGFactory;\n\n/***/ }),\n/* 10 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.MurmurHash3_64 = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n\n update(input) {\n let data, length;\n\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n\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 ((0, _util.isArrayBuffer)(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Wrong data format in MurmurHash3_64_update. \" + \"Input must be a string or array.\");\n }\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\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n\n k1 = 0;\n\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n\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\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n\n }\n\n this.h1 = h1;\n this.h2 = h2;\n }\n\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n 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 const hex1 = (h1 >>> 0).toString(16),\n hex2 = (h2 >>> 0).toString(16);\n return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n }\n\n}\n\nexports.MurmurHash3_64 = MurmurHash3_64;\n\n/***/ }),\n/* 11 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.FontLoader = exports.FontFaceObject = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nclass BaseFontLoader {\n constructor({\n docId,\n onUnsupportedFeature,\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n if (this.constructor === BaseFontLoader) {\n (0, _util.unreachable)(\"Cannot initialize BaseFontLoader.\");\n }\n\n this.docId = docId;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this._document = ownerDocument;\n this.nativeFontFaces = [];\n this.styleElement = null;\n }\n\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.push(nativeFontFace);\n\n this._document.fonts.add(nativeFontFace);\n }\n\n insertRule(rule) {\n let styleElement = this.styleElement;\n\n if (!styleElement) {\n styleElement = this.styleElement = this._document.createElement(\"style\");\n styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;\n\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(styleElement);\n }\n\n const styleSheet = styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n\n this.nativeFontFaces.length = 0;\n\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n\n async bind(font) {\n if (font.attached || font.missingFile) {\n return;\n }\n\n font.attached = true;\n\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n this._onUnsupportedFeature({\n featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative\n });\n\n (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n\n return;\n }\n\n const rule = font.createFontFaceRule();\n\n if (rule) {\n this.insertRule(rule);\n\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n\n this._prepareFontLoadEvent([rule], [font], request);\n });\n }\n }\n\n _queueLoadingCallback(callback) {\n (0, _util.unreachable)(\"Abstract method `_queueLoadingCallback`.\");\n }\n\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return (0, _util.shadow)(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n\n get isSyncFontLoadingSupported() {\n (0, _util.unreachable)(\"Abstract method `isSyncFontLoadingSupported`.\");\n }\n\n get _loadTestFont() {\n (0, _util.unreachable)(\"Abstract method `_loadTestFont`.\");\n }\n\n _prepareFontLoadEvent(rules, fontsToLoad, request) {\n (0, _util.unreachable)(\"Abstract method `_prepareFontLoadEvent`.\");\n }\n\n}\n\nlet FontLoader;\nexports.FontLoader = FontLoader;\n{\n exports.FontLoader = FontLoader = class GenericFontLoader extends BaseFontLoader {\n constructor(params) {\n super(params);\n this.loadingContext = {\n requests: [],\n nextRequestId: 0\n };\n this.loadTestFontId = 0;\n }\n\n get isSyncFontLoadingSupported() {\n let supported = false;\n\n if (typeof navigator === \"undefined\") {\n supported = true;\n } else {\n const m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(navigator.userAgent);\n\n if (m?.[1] >= 14) {\n supported = true;\n }\n }\n\n return (0, _util.shadow)(this, \"isSyncFontLoadingSupported\", supported);\n }\n\n _queueLoadingCallback(callback) {\n function completeRequest() {\n (0, _util.assert)(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n\n while (context.requests.length > 0 && context.requests[0].done) {\n const otherRequest = context.requests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n const context = this.loadingContext;\n const request = {\n id: `pdfjs-font-loading-${context.nextRequestId++}`,\n done: false,\n complete: completeRequest,\n callback\n };\n context.requests.push(request);\n return request;\n }\n\n get _loadTestFont() {\n const getLoadTestFont = function () {\n return atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n };\n\n return (0, _util.shadow)(this, \"_loadTestFont\", getLoadTestFont());\n }\n\n _prepareFontLoadEvent(rules, fonts, 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\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\n let i, ii;\n\n const canvas = this._document.createElement(\"canvas\");\n\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n\n function isFontReady(name, callback) {\n called++;\n\n if (called > 30) {\n (0, _util.warn)(\"Load test font never loaded.\");\n callback();\n return;\n }\n\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n\n setTimeout(isFontReady.bind(null, name, callback));\n }\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\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.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 names = [];\n\n for (const font of fonts) {\n names.push(font.loadedName);\n }\n\n names.push(loadTestFontId);\n\n const div = this._document.createElement(\"div\");\n\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n\n for (const name of names) {\n const span = this._document.createElement(\"span\");\n\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n\n this._document.body.append(div);\n\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n\n };\n}\n\nclass FontFaceObject {\n constructor(translatedData, {\n isEvalSupported = true,\n disableFontFace = false,\n ignoreErrors = false,\n onUnsupportedFeature,\n fontRegistry = null\n }) {\n this.compiledGlyphs = Object.create(null);\n\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this.fontRegistry = fontRegistry;\n }\n\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n\n let nativeFontFace;\n\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this);\n }\n\n return nativeFontFace;\n }\n\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n\n const data = (0, _util.bytesToString)(this.data);\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n let rule;\n\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\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this, url);\n }\n\n return rule;\n }\n\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n\n let cmds;\n\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n\n this._onUnsupportedFeature({\n featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath\n });\n\n (0, _util.warn)(`getPathGenerator - ignoring character: \"${ex}\".`);\n return this.compiledGlyphs[character] = function (c, size) {};\n }\n\n if (this.isEvalSupported && _util.FeatureTest.isEvalSupported) {\n const jsBuf = [];\n\n for (const current of cmds) {\n const args = current.args !== undefined ? current.args.join(\",\") : \"\";\n jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n }\n\n return this.compiledGlyphs[character] = new Function(\"c\", \"size\", jsBuf.join(\"\"));\n }\n\n return this.compiledGlyphs[character] = function (c, size) {\n for (const current of cmds) {\n if (current.cmd === \"scale\") {\n current.args = [size, -size];\n }\n\n c[current.cmd].apply(c, current.args);\n }\n };\n }\n\n}\n\nexports.FontFaceObject = FontFaceObject;\n\n/***/ }),\n/* 12 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.CanvasGraphics = void 0;\n\nvar _display_utils = __w_pdfjs_require__(8);\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _pattern_helper = __w_pdfjs_require__(13);\n\nvar _image_utils = __w_pdfjs_require__(14);\n\nvar _is_node = __w_pdfjs_require__(3);\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst MAX_SIZE_TO_COMPILE = _is_node.isNodeJS && typeof Path2D === \"undefined\" ? -1 : 1000;\nconst FULL_CHUNK_HEIGHT = 16;\n\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\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\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\n ctx.save = function ctxSave() {\n destCtx.save();\n\n this.__originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n\n this.__originalRestore();\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n\n this.__originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n\n this.__originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n\n this.__originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n\n this.__originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n\n this.__originalRotate(angle);\n };\n\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n\n this.__originalClip(rule);\n };\n\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n\n this.__originalMoveTo(x, y);\n };\n\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n\n this.__originalLineTo(x, y);\n };\n\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n\n this.__originalRect(x, y, width, height);\n };\n\n ctx.closePath = function () {\n destCtx.closePath();\n\n this.__originalClosePath();\n };\n\n ctx.beginPath = function () {\n destCtx.beginPath();\n\n this.__originalBeginPath();\n };\n}\n\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n\n getCanvas(id, width, height) {\n let canvasEntry;\n\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\n return canvasEntry;\n }\n\n delete(id) {\n delete this.cache[id];\n }\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\n}\n\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = (0, _display_utils.getCurrentTransform)(ctx);\n\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\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\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}\n\nfunction compileType3Glyph(imgData) {\n const {\n width,\n height\n } = imgData;\n\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n const lineSize = width + 7 & ~7;\n let data = new Uint8Array(lineSize * height),\n pos = 0;\n\n for (const elem of imgData.data) {\n let mask = 128;\n\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n let count = 0;\n pos = 0;\n\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n\n pos = lineSize * (height - 1);\n j0 = i * width1;\n\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const path = new Path2D();\n\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n\n while (p < end && !points[p]) {\n p++;\n }\n\n if (p === end) {\n continue;\n }\n\n path.moveTo(p % width1, i);\n const p0 = p;\n let type = points[p];\n\n do {\n const step = steps[type];\n\n do {\n p += step;\n } while (!points[p]);\n\n const pp = points[p];\n\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n\n path.lineTo(p % width1, p / width1 | 0);\n\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n\n --i;\n }\n\n data = null;\n points = null;\n\n const drawOutline = function (c) {\n c.save();\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.fill(path);\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nclass CanvasExtraState {\n constructor(width, height) {\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = _util.IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = null;\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n\n updatePathMinMax(transform, x, y) {\n [x, y] = _util.Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n\n updateRectMinMax(transform, rect) {\n const p1 = _util.Util.applyTransform(rect, transform);\n\n const p2 = _util.Util.applyTransform(rect.slice(2), transform);\n\n this.minX = Math.min(this.minX, p1[0], p2[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1]);\n }\n\n updateScalingPathMinMax(transform, minMax) {\n _util.Util.scaleMinMax(transform, minMax);\n\n this.minX = Math.min(this.minX, minMax[0]);\n this.maxX = Math.max(this.maxX, minMax[1]);\n this.minY = Math.min(this.minY, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\n\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n const box = _util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);\n\n if (minMax) {\n minMax[0] = Math.min(minMax[0], box[0], box[2]);\n minMax[1] = Math.max(minMax[1], box[0], box[2]);\n minMax[2] = Math.min(minMax[2], box[1], box[3]);\n minMax[3] = Math.max(minMax[3], box[1], box[3]);\n return;\n }\n\n this.updateRectMinMax(transform, box);\n }\n\n getPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n\n if (pathType === _pattern_helper.PathType.STROKE) {\n if (!transform) {\n (0, _util.unreachable)(\"Stroke bounding box must include transform.\");\n }\n\n const scale = _util.Util.singularValueDecompose2dScale(transform);\n\n const xStrokePad = scale[0] * this.lineWidth / 2;\n const yStrokePad = scale[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n\n return box;\n }\n\n updateClipFromPath() {\n const intersect = _util.Util.intersect(this.clipBox, this.getPathBoundingBox());\n\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n\n isEmptyClip() {\n return this.minX === Infinity;\n }\n\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n\n getClippedPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) {\n return _util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n\n}\n\nfunction putBinaryImageData(ctx, imgData, transferMaps = null) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\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 let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;\n\n if (transferMaps) {\n switch (transferMaps.length) {\n case 1:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[0];\n transferMapBlue = transferMaps[0];\n transferMapGray = transferMaps[0];\n break;\n\n case 4:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[1];\n transferMapBlue = transferMaps[2];\n transferMapGray = transferMaps[3];\n break;\n }\n }\n\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 let white = 0xffffffff;\n let black = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n\n if (transferMapGray) {\n if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {\n [white, black] = [black, white];\n }\n }\n\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n\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\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\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {\n const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === _util.ImageKind.RGB_24BPP) {\n const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n\n destPos = 0;\n\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\n if (hasTransferMaps) {\n for (let k = 0; k < destPos; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\n\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\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\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = (0, _image_utils.applyMaskImageData)({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\"];\n\n for (let i = 0, ii = properties.length; i < ii; i++) {\n const property = properties[i];\n\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\n\nfunction resetCtxToDefault(ctx, foregroundColor) {\n ctx.strokeStyle = ctx.fillStyle = foregroundColor || \"#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\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n}\n\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n const length = bytes.length;\n\n for (let i = 3; i < length; i += 4) {\n const alpha = bytes[i];\n\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n const alpha_ = 255 - alpha;\n bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;\n bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;\n bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;\n }\n }\n}\n\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n const length = maskData.length;\n const scale = 1 / 255;\n\n for (let i = 3; i < length; i += 4) {\n const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = layerData[i] * alpha * scale | 0;\n }\n}\n\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n const length = maskData.length;\n\n for (let i = 3; i < length; i += 4) {\n const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;\n layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;\n }\n}\n\nfunction genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n const hasBackdrop = !!backdrop;\n const r0 = hasBackdrop ? backdrop[0] : 0;\n const g0 = hasBackdrop ? backdrop[1] : 0;\n const b0 = hasBackdrop ? backdrop[2] : 0;\n let composeFn;\n\n if (subtype === \"Luminosity\") {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n\n const PIXELS_TO_PROCESS = 1048576;\n const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n\n for (let row = 0; row < height; row += chunkSize) {\n const chunkHeight = Math.min(chunkSize, height - row);\n const maskData = maskCtx.getImageData(layerOffsetX - maskOffsetX, row + (layerOffsetY - maskOffsetY), width, chunkHeight);\n const layerData = layerCtx.getImageData(layerOffsetX, row + layerOffsetY, width, chunkHeight);\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n\n composeFn(maskData.data, layerData.data, transferMap);\n layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n }\n}\n\nfunction 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\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n\n 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\nfunction getImageSmoothingEnabled(transform, interpolate) {\n const scale = _util.Util.singularValueDecompose2dScale(transform);\n\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS);\n\n if (interpolate !== undefined) {\n return interpolate;\n } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n return true;\n }\n\n return false;\n}\n\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\n\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig, 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.imageLayer = imageLayer;\n this.groupStack = [];\n this.processingType3 = null;\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 = [];\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.backgroundColor = pageColors?.background || null;\n this.foregroundColor = pageColors?.foreground || null;\n this._cachedScaleForStroking = null;\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\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\n return fallback;\n }\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 defaultBackgroundColor = background || \"#ffffff\";\n this.ctx.save();\n\n if (this.foregroundColor && this.backgroundColor) {\n this.ctx.fillStyle = this.foregroundColor;\n const fg = this.foregroundColor = this.ctx.fillStyle;\n this.ctx.fillStyle = this.backgroundColor;\n const bg = this.backgroundColor = this.ctx.fillStyle;\n let isValidDefaultBg = true;\n let defaultBg = defaultBackgroundColor;\n this.ctx.fillStyle = defaultBackgroundColor;\n defaultBg = this.ctx.fillStyle;\n isValidDefaultBg = typeof defaultBg === \"string\" && /^#[0-9A-Fa-f]{6}$/.test(defaultBg);\n\n if (fg === \"#000000\" && bg === \"#ffffff\" || fg === bg || !isValidDefaultBg) {\n this.foregroundColor = this.backgroundColor = null;\n } else {\n const [rB, gB, bB] = (0, _display_utils.getRGB)(defaultBg);\n\n const newComp = x => {\n x /= 255;\n return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n };\n\n const lumB = Math.round(0.2126 * newComp(rB) + 0.7152 * newComp(gB) + 0.0722 * newComp(bB));\n\n this.selectColor = (r, g, b) => {\n const lumC = 0.2126 * newComp(r) + 0.7152 * newComp(g) + 0.0722 * newComp(b);\n return Math.round(lumC) === lumB ? bg : fg;\n };\n }\n }\n\n this.ctx.fillStyle = this.backgroundColor || defaultBackgroundColor;\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.restore();\n\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(...(0, _display_utils.getCurrentTransform)(this.compositeCtx));\n }\n\n this.ctx.save();\n resetCtxToDefault(this.ctx, this.foregroundColor);\n\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = (0, _display_utils.getCurrentTransform)(this.ctx);\n\n if (this.imageLayer) {\n (0, _display_utils.deprecated)(\"The `imageLayer` functionality will be removed in the future.\");\n this.imageLayer.beginLayout();\n }\n }\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\n if (argsArrayLen === i) {\n return i;\n }\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\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== _util.OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n\n i++;\n\n if (i === argsArrayLen) {\n return i;\n }\n\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n\n steps = 0;\n }\n }\n }\n\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n\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\n cache.clear();\n }\n\n this._cachedBitmapsMap.clear();\n\n if (this.imageLayer) {\n this.imageLayer.endLayout();\n }\n }\n\n _scaleImage(img, inverseTransform) {\n const width = img.width;\n const height = img.height;\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\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = Math.ceil(paintHeight / 2);\n heightScale /= paintHeight / newHeight;\n }\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\n return {\n img,\n paintWidth,\n paintHeight\n };\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 = (0, _display_utils.getCurrentTransform)(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n const withoutTranslation = currentTransform.slice(0, 4);\n cacheKey = JSON.stringify(isPatternFill ? withoutTranslation : [withoutTranslation, fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n\n if (!cache) {\n cache = new Map();\n\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n\n const cachedImage = cache.get(cacheKey);\n\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\n scaled = cachedImage;\n }\n\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n\n let maskToCanvas = _util.Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n\n maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n\n const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas);\n\n const cord2 = _util.Util.applyTransform([width, height], maskToCanvas);\n\n const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);\n\n const drawnWidth = Math.round(rect[2] - rect[0]) || 1;\n const drawnHeight = Math.round(rect[3] - rect[1]) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = Math.min(cord1[0], cord2[0]);\n const offsetY = Math.min(cord1[1], cord2[1]);\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, (0, _display_utils.getCurrentTransformInverse)(fillCtx));\n scaled = scaled.img;\n\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled((0, _display_utils.getCurrentTransform)(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n\n const inverse = _util.Util.transform((0, _display_utils.getCurrentTransformInverse)(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, _pattern_helper.PathType.FILL) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n\n setLineWidth(width) {\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking = null;\n }\n\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n\n setRenderingIntent(intent) {}\n\n setFlatness(flatness) {}\n\n setGState(states) {\n for (let i = 0, ii = states.length; i < ii; i++) {\n const state = states[i];\n const key = state[0];\n const value = state[1];\n\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n\n case \"LC\":\n this.setLineCap(value);\n break;\n\n case \"LJ\":\n this.setLineJoin(value);\n break;\n\n case \"ML\":\n this.setMiterLimit(value);\n break;\n\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n\n case \"FL\":\n this.setFlatness(value);\n break;\n\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n\n case \"CA\":\n this.current.strokeAlpha = state[1];\n break;\n\n case \"ca\":\n this.current.fillAlpha = state[1];\n this.ctx.globalAlpha = state[1];\n break;\n\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n\n case \"TR\":\n this.current.transferMaps = value;\n }\n }\n }\n\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\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 this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform(...(0, _display_utils.getCurrentTransform)(this.suspendedCtx));\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n }\n\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n\n this.ctx._removeMirroring();\n\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\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\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n 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\n save() {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n\n if (this.inSMaskMode) {\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking = null;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking = null;\n this._cachedGetSinglePixelWidth = null;\n }\n\n constructPath(ops, args, minMax) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n const currentTransform = (0, _display_utils.getCurrentTransform)(ctx);\n const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case _util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n\n if (!isScalingMatrix) {\n current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n }\n\n ctx.closePath();\n break;\n\n case _util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n\n break;\n\n case _util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n\n break;\n\n case _util.OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);\n j += 6;\n break;\n\n case _util.OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n\n case _util.OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);\n j += 4;\n break;\n\n case _util.OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n\n current.setCurrentPoint(x, y);\n }\n\n closePath() {\n this.ctx.closePath();\n }\n\n stroke(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.STROKE);\n this.rescaleAndStroke(false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(true);\n }\n }\n\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n\n ctx.globalAlpha = this.current.fillAlpha;\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n fill(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL);\n needRestore = true;\n }\n\n const intersect = this.current.getClippedPathBoundingBox();\n\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n\n if (needRestore) {\n ctx.restore();\n }\n\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n this.consumePath();\n }\n\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n\n endPath() {\n this.consumePath();\n }\n\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n\n beginText() {\n this.current.textMatrix = _util.IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n\n for (const path of paths) {\n ctx.setTransform(...path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n\n current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n (0, _util.warn)(\"Invalid font matrix for font \" + fontRefName);\n }\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return;\n }\n\n const name = fontObj.loadedName || \"sans-serif\";\n let bold = \"normal\";\n\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n const typeface = `\"${name}\", ${fontObj.fallbackName}`;\n let browserFontSize = size;\n\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\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n paintChar(character, x, y, patternTransform) {\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 & _util.TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n let addToPath;\n\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n\n if (patternTransform) {\n ctx.setTransform(...patternTransform);\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.stroke();\n }\n\n ctx.restore();\n } else {\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n paths.push({\n transform: (0, _display_utils.getCurrentTransform)(ctx),\n x,\n y,\n fontSize,\n addToPath\n });\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\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\n return (0, _util.shadow)(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n const fontSize = current.fontSize;\n\n if (fontSize === 0) {\n return undefined;\n }\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 === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n let patternTransform;\n\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL);\n patternTransform = (0, _display_utils.getCurrentTransform)(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n let x = 0,\n i;\n\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\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\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\n if (font.remeasure && width > 0) {\n const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n\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\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, patternTransform);\n\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, patternTransform);\n }\n }\n }\n\n let charWidth;\n\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n ctx.restore();\n this.compose();\n return undefined;\n }\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 || _util.FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n\n this._cachedScaleForStroking = null;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y);\n ctx.scale(textHScale, fontDirection);\n\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n\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\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n\n if (!operatorList) {\n (0, _util.warn)(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n\n const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);\n\n width = transformed[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n\n ctx.restore();\n this.processingType3 = null;\n }\n\n setCharWidth(xWidth, yWidth) {}\n\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip();\n this.endPath();\n }\n\n getColorN_Pattern(IR) {\n let pattern;\n\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform = this.baseTransform || (0, _display_utils.getCurrentTransform)(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => {\n return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory);\n }\n };\n pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n\n return pattern;\n }\n\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n\n setStrokeRGBColor(r, g, b) {\n const color = this.selectColor?.(r, g, b) || _util.Util.makeHexColor(r, g, b);\n\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n }\n\n setFillRGBColor(r, g, b) {\n const color = this.selectColor?.(r, g, b) || _util.Util.makeHexColor(r, g, b);\n\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n }\n\n _getPattern(objId, matrix = null) {\n let pattern;\n\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = (0, _pattern_helper.getShadingPattern)(this.objs.get(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n\n if (matrix) {\n pattern.matrix = matrix;\n }\n\n return pattern;\n }\n\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n\n const ctx = this.ctx;\n this.save();\n\n const pattern = this._getPattern(objId);\n\n ctx.fillStyle = pattern.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.SHADING);\n const inv = (0, _display_utils.getCurrentTransformInverse)(ctx);\n\n if (inv) {\n const canvas = ctx.canvas;\n const width = canvas.width;\n const height = canvas.height;\n\n const bl = _util.Util.applyTransform([0, 0], inv);\n\n const br = _util.Util.applyTransform([0, height], inv);\n\n const ul = _util.Util.applyTransform([width, 0], inv);\n\n const ur = _util.Util.applyTransform([width, height], inv);\n\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n\n beginInlineImage() {\n (0, _util.unreachable)(\"Should not call beginInlineImage\");\n }\n\n beginImageData() {\n (0, _util.unreachable)(\"Should not call beginImageData\");\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(...matrix);\n }\n\n this.baseTransform = (0, _display_utils.getCurrentTransform)(this.ctx);\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updateRectMinMax((0, _display_utils.getCurrentTransform)(this.ctx), bbox);\n this.clip();\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n\n const currentCtx = this.ctx;\n\n if (!group.isolated) {\n (0, _util.info)(\"TODO: Support non-isolated groups.\");\n }\n\n if (group.knockout) {\n (0, _util.warn)(\"Knockout groups not supported.\");\n }\n\n const currentTransform = (0, _display_utils.getCurrentTransform)(currentCtx);\n\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n\n let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, (0, _display_utils.getCurrentTransform)(currentCtx));\n\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n let scaleX = 1,\n scaleY = 1;\n\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n currentCtx.save();\n }\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\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\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\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = (0, _display_utils.getCurrentTransform)(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n\n const dirtyBox = _util.Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx, this.foregroundColor);\n this.ctx.save();\n this.save();\n\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n\n if (Array.isArray(rect) && rect.length === 4) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n\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\n const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale((0, _display_utils.getCurrentTransform)(this.ctx));\n\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.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n resetCtxToDefault(this.ctx, this.foregroundColor);\n } else {\n resetCtxToDefault(this.ctx, this.foregroundColor);\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.endPath();\n }\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\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const glyph = this.processingType3;\n\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\n\n if (glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n }\n\n const mask = this._createMaskCanvas(img);\n\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\n paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n\n img = this.getObject(img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = (0, _display_utils.getCurrentTransform)(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n\n const mask = this._createMaskCanvas(img);\n\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n\n const [x, y] = _util.Util.applyTransform([0, 0], trans);\n\n ctx.drawImage(mask.canvas, x, y);\n }\n\n ctx.restore();\n this.compose();\n }\n\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n\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, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.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\n this.compose();\n }\n\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n\n const imgData = this.getObject(objId);\n\n if (!imgData) {\n (0, _util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n }\n\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n\n const imgData = this.getObject(objId);\n\n if (!imgData) {\n (0, _util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n\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\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save();\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n\n 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, this.current.transferMaps);\n imgToPaint = tmpCanvas.canvas;\n }\n\n const scaled = this._scaleImage(imgToPaint, (0, _display_utils.getCurrentTransformInverse)(ctx));\n\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled((0, _display_utils.getCurrentTransform)(ctx), imgData.interpolate);\n const [rWidth, rHeight] = drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n\n if (this.imageLayer) {\n const [left, top] = _util.Util.applyTransform([0, -height], (0, _display_utils.getCurrentTransform)(this.ctx));\n\n this.imageLayer.appendImage({\n imgData,\n left,\n top,\n width: rWidth,\n height: rHeight\n });\n }\n\n this.compose();\n this.restore();\n }\n\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n\n const ctx = this.ctx;\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, this.current.transferMaps);\n\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n\n if (this.imageLayer) {\n const [left, top] = _util.Util.applyTransform([entry.x, entry.y], (0, _display_utils.getCurrentTransform)(this.ctx));\n\n this.imageLayer.appendImage({\n imgData,\n left,\n top,\n width: w,\n height: h\n });\n }\n\n ctx.restore();\n }\n\n this.compose();\n }\n\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n\n markPoint(tag) {}\n\n markPointProps(tag, properties) {}\n\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\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\n this.contentVisible = this.isContentVisible();\n }\n\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n\n beginCompat() {}\n\n endCompat() {}\n\n consumePath(clipBox) {\n const isEmpty = this.current.isEmptyClip();\n\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n\n const ctx = this.ctx;\n\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n }\n\n this.pendingClip = null;\n }\n\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = (0, _display_utils.getCurrentTransform)(this.ctx);\n\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\n return this._cachedGetSinglePixelWidth;\n }\n\n getScaleForStroking() {\n if (!this._cachedScaleForStroking) {\n const {\n lineWidth\n } = this.current;\n const m = (0, _display_utils.getCurrentTransform)(this.ctx);\n let scaleX, scaleY;\n\n if (m[1] === 0 && m[2] === 0) {\n const normX = Math.abs(m[0]);\n const normY = Math.abs(m[3]);\n\n 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(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[1]);\n const normY = Math.hypot(m[2], m[3]);\n\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\n this._cachedScaleForStroking = [scaleX, scaleY];\n }\n\n return this._cachedScaleForStroking;\n }\n\n rescaleAndStroke(saveRestore) {\n const {\n ctx\n } = this;\n const {\n lineWidth\n } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n ctx.lineWidth = lineWidth || 1;\n\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n\n let savedMatrix, savedDashes, savedDashOffset;\n\n if (saveRestore) {\n savedMatrix = (0, _display_utils.getCurrentTransform)(ctx);\n savedDashes = ctx.getLineDash().slice();\n savedDashOffset = ctx.lineDashOffset;\n }\n\n ctx.scale(scaleX, scaleY);\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(ctx.getLineDash().map(x => x / scale));\n ctx.lineDashOffset /= scale;\n ctx.stroke();\n\n if (saveRestore) {\n ctx.setTransform(...savedMatrix);\n ctx.setLineDash(savedDashes);\n ctx.lineDashOffset = savedDashOffset;\n }\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\n return true;\n }\n\n}\n\nexports.CanvasGraphics = CanvasGraphics;\n\nfor (const op in _util.OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n/***/ }),\n/* 13 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.TilingPattern = exports.PathType = void 0;\nexports.getShadingPattern = getShadingPattern;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _display_utils = __w_pdfjs_require__(8);\n\nvar _is_node = __w_pdfjs_require__(3);\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nexports.PathType = PathType;\n\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox || _is_node.isNodeJS) {\n return;\n }\n\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\n\nclass BaseShadingPattern {\n constructor() {\n if (this.constructor === BaseShadingPattern) {\n (0, _util.unreachable)(\"Cannot initialize BaseShadingPattern.\");\n }\n }\n\n getPattern() {\n (0, _util.unreachable)(\"Abstract method `getPattern` called.\");\n }\n\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\n _createGradient(ctx) {\n let grad;\n\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\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n\n return grad;\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, (0, _display_utils.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, true);\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.Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\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\n try {\n pattern.setTransform(domMatrix);\n } catch (ex) {\n (0, _util.warn)(`RadialAxialShadingPattern.getPattern: \"${ex?.message}\".`);\n }\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n\n return pattern;\n }\n\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\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\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\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\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\n if (y1 >= y3) {\n return;\n }\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\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n let k;\n\n if (y < y1) {\n k = 0;\n } else {\n k = (y1 - y) / (y1 - y2);\n }\n\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n\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\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n\n let k;\n\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\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\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\n\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n\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\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n\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\n break;\n\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\n break;\n\n default:\n throw new Error(\"illegal figure\");\n }\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[7];\n this._background = IR[8];\n this.matrix = null;\n }\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, false);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n\n if (backgroundColor) {\n const bytes = data.data;\n\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\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\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\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n\n if (pathType === PathType.SHADING) {\n scale = _util.Util.singularValueDecompose2dScale((0, _display_utils.getCurrentTransform)(ctx));\n } else {\n scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);\n\n if (this.matrix) {\n const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);\n\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\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\n}\n\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n\n}\n\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\n\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\n\nclass TilingPattern {\n static get MAX_PATTERN_SIZE() {\n return (0, _util.shadow)(this, \"MAX_PATTERN_SIZE\", 3000);\n }\n\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n\n createPatternCanvas(owner) {\n const operatorList = this.operatorList;\n const bbox = this.bbox;\n const xstep = this.xstep;\n const ystep = this.ystep;\n const paintType = this.paintType;\n const tilingType = this.tilingType;\n const color = this.color;\n const canvasGraphicsFactory = this.canvasGraphicsFactory;\n (0, _util.info)(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n\n const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);\n\n const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);\n\n const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];\n const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);\n const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size, true);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n let adjustedX0 = x0;\n let adjustedY0 = y0;\n let adjustedX1 = x1;\n let adjustedY1 = y1;\n\n if (x0 < 0) {\n adjustedX0 = 0;\n adjustedX1 += Math.abs(x0);\n }\n\n if (y0 < 0) {\n adjustedY0 = 0;\n adjustedY1 += Math.abs(y0);\n }\n\n tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n graphics.baseTransform = (0, _display_utils.getCurrentTransform)(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: adjustedX0,\n offsetY: adjustedY0\n };\n }\n\n getSizeAndScale(step, realOutputSize, scale) {\n step = Math.abs(step);\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n\n return {\n scale,\n size\n };\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 graphics.current.updateRectMinMax((0, _display_utils.getCurrentTransform)(graphics.ctx), [x0, y0, x1, y1]);\n graphics.clip();\n graphics.endPath();\n }\n\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n\n case PaintType.UNCOLORED:\n const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]);\n\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n\n default:\n throw new _util.FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n let matrix = inverse;\n\n if (pathType !== PathType.SHADING) {\n matrix = _util.Util.transform(matrix, owner.baseTransform);\n\n if (this.matrix) {\n matrix = _util.Util.transform(matrix, this.matrix);\n }\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\n try {\n pattern.setTransform(domMatrix);\n } catch (ex) {\n (0, _util.warn)(`TilingPattern.getPattern: \"${ex?.message}\".`);\n }\n\n return pattern;\n }\n\n}\n\nexports.TilingPattern = TilingPattern;\n\n/***/ }),\n/* 14 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.applyMaskImageData = applyMaskImageData;\n\nvar _util = __w_pdfjs_require__(1);\n\nfunction applyMaskImageData({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height,\n inverseDecode = false\n}) {\n const opaque = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n\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\n if (widthRemainder === 0) {\n continue;\n }\n\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n\n return {\n srcPos,\n destPos\n };\n}\n\n/***/ }),\n/* 15 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.GlobalWorkerOptions = void 0;\nconst GlobalWorkerOptions = Object.create(null);\nexports.GlobalWorkerOptions = GlobalWorkerOptions;\nGlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort;\nGlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? \"\" : GlobalWorkerOptions.workerSrc;\n\n/***/ }),\n/* 16 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.MessageHandler = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\n\nfunction wrapReason(reason) {\n if (!(reason instanceof Error || typeof reason === \"object\" && reason !== null)) {\n (0, _util.unreachable)('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n\n switch (reason.name) {\n case \"AbortException\":\n return new _util.AbortException(reason.message);\n\n case \"MissingPDFException\":\n return new _util.MissingPDFException(reason.message);\n\n case \"PasswordException\":\n return new _util.PasswordException(reason.message, reason.code);\n\n case \"UnexpectedResponseException\":\n return new _util.UnexpectedResponseException(reason.message, reason.status);\n\n case \"UnknownErrorException\":\n return new _util.UnknownErrorException(reason.message, reason.details);\n\n default:\n return new _util.UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n\n if (data.targetName !== this.sourceName) {\n return;\n }\n\n if (data.stream) {\n this._processStreamMessage(data);\n\n return;\n }\n\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n\n return;\n }\n\n const action = this.actionHandler[data.action];\n\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n\n if (data.streamId) {\n this._createStreamSink(data);\n\n return;\n }\n\n action(data.data);\n };\n\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n const ah = this.actionHandler;\n\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n\n ah[actionName] = handler;\n }\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\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = (0, _util.createPromiseCapability)();\n this.callbackCapabilities[callbackId] = capability;\n\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\n return capability.promise;\n }\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 = (0, _util.createPromiseCapability)();\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 = (0, _util.createPromiseCapability)();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n (0, _util.assert)(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = (0, _util.createPromiseCapability)();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\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\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = (0, _util.createPromiseCapability)();\n this.ready = this.sinkCapability.promise;\n }\n\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n (0, _util.assert)(reason instanceof Error, \"error must have a valid reason\");\n\n if (this.isCancelled) {\n return;\n }\n\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n\n sinkCapability: (0, _util.createPromiseCapability)(),\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 new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).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\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\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\n break;\n\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n\n break;\n\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\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n\n streamSink.desiredSize = data.desiredSize;\n new Promise(function (resolve) {\n resolve(streamSink.onPull && streamSink.onPull());\n }).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\n case StreamKind.ENQUEUE:\n (0, _util.assert)(streamController, \"enqueue should have stream controller\");\n\n if (streamController.isClosed) {\n break;\n }\n\n streamController.controller.enqueue(data.chunk);\n break;\n\n case StreamKind.CLOSE:\n (0, _util.assert)(streamController, \"close should have stream controller\");\n\n if (streamController.isClosed) {\n break;\n }\n\n streamController.isClosed = true;\n streamController.controller.close();\n\n this._deleteStreamController(streamController, streamId);\n\n break;\n\n case StreamKind.ERROR:\n (0, _util.assert)(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n\n this._deleteStreamController(streamController, streamId);\n\n break;\n\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n\n this._deleteStreamController(streamController, streamId);\n\n break;\n\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n\n new Promise(function (resolve) {\n resolve(streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason)));\n }).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(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n async _deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall && streamController.startCall.promise, streamController.pullCall && streamController.pullCall.promise, streamController.cancelCall && streamController.cancelCall.promise]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n\n}\n\nexports.MessageHandler = MessageHandler;\n\n/***/ }),\n/* 17 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Metadata = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nclass Metadata {\n #metadataMap;\n #data;\n\n constructor({\n parsedData,\n rawData\n }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n\n getRaw() {\n return this.#data;\n }\n\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n\n getAll() {\n return (0, _util.objectFromMap)(this.#metadataMap);\n }\n\n has(name) {\n return this.#metadataMap.has(name);\n }\n\n}\n\nexports.Metadata = Metadata;\n\n/***/ }),\n/* 18 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.OptionalContentConfig = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nconst INTERNAL = Symbol(\"INTERNAL\");\n\nclass OptionalContentGroup {\n #visible = true;\n\n constructor(name, intent) {\n this.name = name;\n this.intent = intent;\n }\n\n get visible() {\n return this.#visible;\n }\n\n _setVisible(internal, visible) {\n if (internal !== INTERNAL) {\n (0, _util.unreachable)(\"Internal method `_setVisible` called.\");\n }\n\n this.#visible = visible;\n }\n\n}\n\nclass OptionalContentConfig {\n #cachedHasInitialVisibility = true;\n #groups = new Map();\n #initialVisibility = null;\n #order = null;\n\n constructor(data) {\n this.name = null;\n this.creator = null;\n\n if (data === null) {\n return;\n }\n\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(group.name, group.intent));\n }\n\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n\n this.#initialVisibility = new Map();\n\n for (const [id, group] of this.#groups) {\n this.#initialVisibility.set(id, group.visible);\n }\n }\n\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n\n if (length < 2) {\n return true;\n }\n\n const operator = array[0];\n\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n\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 (0, _util.warn)(`Optional content group not found: ${element}`);\n return true;\n }\n\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n\n break;\n\n case \"Or\":\n if (state) {\n return true;\n }\n\n break;\n\n case \"Not\":\n return !state;\n\n default:\n return true;\n }\n }\n\n return operator === \"And\";\n }\n\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n\n if (!group) {\n (0, _util.warn)(\"Optional content group not defined.\");\n return true;\n }\n\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n (0, _util.warn)(`Optional content group not found: ${group.id}`);\n return true;\n }\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\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n\n if (this.#groups.get(id).visible) {\n return true;\n }\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 (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n\n if (!this.#groups.get(id).visible) {\n return false;\n }\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 (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n\n if (!this.#groups.get(id).visible) {\n return true;\n }\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 (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n\n return true;\n }\n\n (0, _util.warn)(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n\n (0, _util.warn)(`Unknown group type ${group.type}.`);\n return true;\n }\n\n setVisibility(id, visible = true) {\n if (!this.#groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return;\n }\n\n this.#groups.get(id)._setVisible(INTERNAL, !!visible);\n\n this.#cachedHasInitialVisibility = null;\n }\n\n get hasInitialVisibility() {\n if (this.#cachedHasInitialVisibility !== null) {\n return this.#cachedHasInitialVisibility;\n }\n\n for (const [id, group] of this.#groups) {\n const visible = this.#initialVisibility.get(id);\n\n if (group.visible !== visible) {\n return this.#cachedHasInitialVisibility = false;\n }\n }\n\n return this.#cachedHasInitialVisibility = true;\n }\n\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n\n if (this.#order) {\n return this.#order.slice();\n }\n\n return [...this.#groups.keys()];\n }\n\n getGroups() {\n return this.#groups.size > 0 ? (0, _util.objectFromMap)(this.#groups) : null;\n }\n\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n\n}\n\nexports.OptionalContentConfig = OptionalContentConfig;\n\n/***/ }),\n/* 19 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFDataTransportStream = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _display_utils = __w_pdfjs_require__(8);\n\nclass PDFDataTransportStream {\n constructor(params, pdfDataRangeTransport) {\n (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n this._queuedChunks = [];\n this._progressiveDone = params.progressiveDone || false;\n this._contentDispositionFilename = params.contentDispositionFilename || null;\n const initialData = params.initialData;\n\n if (initialData?.length > 0) {\n const buffer = new Uint8Array(initialData).buffer;\n\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !params.disableStream;\n this._isRangeSupported = !params.disableRange;\n this._contentLength = params.length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n\n this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n\n _onReceiveData(args) {\n const buffer = new Uint8Array(args.chunk).buffer;\n\n if (args.begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== args.begin) {\n return false;\n }\n\n rangeReader._enqueue(buffer);\n\n return true;\n });\n\n (0, _util.assert)(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n _onProgress(evt) {\n if (evt.total === undefined) {\n const firstReader = this._rangeReaders[0];\n\n if (firstReader?.onProgress) {\n firstReader.onProgress({\n loaded: evt.loaded\n });\n }\n } else {\n const fullReader = this._fullRequestReader;\n\n if (fullReader?.onProgress) {\n fullReader.onProgress({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n }\n\n _onProgressiveDone() {\n if (this._fullRequestReader) {\n this._fullRequestReader.progressiveDone();\n }\n\n this._progressiveDone = true;\n }\n\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n (0, _util.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\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n\n this._rangeReaders.push(reader);\n\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n\n this._pdfDataRangeTransport.abort();\n }\n\n}\n\nexports.PDFDataTransportStream = PDFDataTransportStream;\n\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n\n this._loaded += chunk.byteLength;\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n\n get contentLength() {\n return this._stream._contentLength;\n }\n\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n\n this._requests.length = 0;\n }\n\n progressiveDone() {\n if (this._done) {\n return;\n }\n\n this._done = true;\n }\n\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\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n\n this._requests.length = 0;\n }\n\n this._done = true;\n\n this._stream._removeRangeReader(this);\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n\n this._requests.length = 0;\n\n this._stream._removeRangeReader(this);\n }\n\n}\n\n/***/ }),\n/* 20 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.XfaText = void 0;\n\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n\n function walk(node) {\n if (!node) {\n return;\n }\n\n let str = null;\n const name = node.name;\n\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\n if (str !== null) {\n items.push({\n str\n });\n }\n\n if (!node.children) {\n return;\n }\n\n for (const child of node.children) {\n walk(child);\n }\n }\n\n walk(xfa);\n return output;\n }\n\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n\n}\n\nexports.XfaText = XfaText;\n\n/***/ }),\n/* 21 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.NodeStandardFontDataFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0;\n\nvar _base_factory = __w_pdfjs_require__(9);\n\n;\n\nconst fetchData = function (url) {\n return new Promise((resolve, reject) => {\n const fs = require(\"fs\");\n\n fs.readFile(url, (error, data) => {\n if (error || !data) {\n reject(new Error(error));\n return;\n }\n\n resolve(new Uint8Array(data));\n });\n });\n};\n\nclass NodeCanvasFactory extends _base_factory.BaseCanvasFactory {\n _createCanvas(width, height) {\n const Canvas = require(\"canvas\");\n\n return Canvas.createCanvas(width, height);\n }\n\n}\n\nexports.NodeCanvasFactory = NodeCanvasFactory;\n\nclass NodeCMapReaderFactory extends _base_factory.BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url).then(data => {\n return {\n cMapData: data,\n compressionType\n };\n });\n }\n\n}\n\nexports.NodeCMapReaderFactory = NodeCMapReaderFactory;\n\nclass NodeStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url);\n }\n\n}\n\nexports.NodeStandardFontDataFactory = NodeStandardFontDataFactory;\n\n/***/ }),\n/* 22 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.AnnotationEditorLayer = void 0;\n\nvar _tools = __w_pdfjs_require__(7);\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _freetext = __w_pdfjs_require__(23);\n\nvar _ink = __w_pdfjs_require__(24);\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #boundPointerup = this.pointerup.bind(this);\n #boundPointerdown = this.pointerdown.bind(this);\n #editors = new Map();\n #hadPointerDown = false;\n #isCleaningUp = false;\n #uiManager;\n static _initialized = false;\n\n constructor(options) {\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n\n _freetext.FreeTextEditor.initialize(options.l10n);\n\n _ink.InkEditor.initialize(options.l10n);\n\n options.uiManager.registerEditorTypes([_freetext.FreeTextEditor, _ink.InkEditor]);\n }\n\n this.#uiManager = options.uiManager;\n this.annotationStorage = options.annotationStorage;\n this.pageIndex = options.pageIndex;\n this.div = options.div;\n this.#accessibilityManager = options.accessibilityManager;\n this.#uiManager.addLayer(this);\n }\n\n updateToolbar(mode) {\n this.#uiManager.updateToolbar(mode);\n }\n\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n\n if (mode === _util.AnnotationEditorType.INK) {\n this.addInkEditorIfNeeded(false);\n this.disableClick();\n } else {\n this.enableClick();\n }\n\n this.#uiManager.unselectAll();\n }\n\n addInkEditorIfNeeded(isCommitting) {\n if (!isCommitting && this.#uiManager.getMode() !== _util.AnnotationEditorType.INK) {\n return;\n }\n\n if (!isCommitting) {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.setInBackground();\n return;\n }\n }\n }\n\n const editor = this.#createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n });\n editor.setInBackground();\n }\n\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n\n enable() {\n this.div.style.pointerEvents = \"auto\";\n\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n }\n }\n\n disable() {\n this.div.style.pointerEvents = \"none\";\n\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n }\n }\n\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n\n if (currentActive === editor) {\n return;\n }\n\n this.#uiManager.setActiveEditor(editor);\n }\n\n enableClick() {\n this.div.addEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.addEventListener(\"pointerup\", this.#boundPointerup);\n }\n\n disableClick() {\n this.div.removeEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.removeEventListener(\"pointerup\", this.#boundPointerup);\n }\n\n attach(editor) {\n this.#editors.set(editor.id, editor);\n }\n\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n }\n\n remove(editor) {\n this.#uiManager.removeEditor(editor);\n this.detach(editor);\n this.annotationStorage.remove(editor.id);\n editor.div.style.display = \"none\";\n setTimeout(() => {\n editor.div.style.display = \"\";\n editor.div.remove();\n editor.isAttachedToDOM = false;\n\n if (document.activeElement === document.body) {\n this.#uiManager.focusMainContainer();\n }\n }, 0);\n\n if (!this.#isCleaningUp) {\n this.addInkEditorIfNeeded(false);\n }\n }\n\n #changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n\n this.attach(editor);\n editor.pageIndex = this.pageIndex;\n editor.parent?.detach(editor);\n editor.parent = this;\n\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n\n add(editor) {\n this.#changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n\n this.moveEditorInDOM(editor);\n editor.onceAdded();\n this.addToAnnotationStorage(editor);\n }\n\n moveEditorInDOM(editor) {\n this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && !this.annotationStorage.has(editor.id)) {\n this.annotationStorage.setValue(editor.id, editor);\n }\n }\n\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.rebuild();\n } else {\n this.add(editor);\n }\n }\n\n addANewEditor(editor) {\n const cmd = () => {\n this.addOrRebuild(editor);\n };\n\n const undo = () => {\n editor.remove();\n };\n\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n\n addUndoableEditor(editor) {\n const cmd = () => {\n this.addOrRebuild(editor);\n };\n\n const undo = () => {\n editor.remove();\n };\n\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n\n getNextId() {\n return this.#uiManager.getId();\n }\n\n #createNewEditor(params) {\n switch (this.#uiManager.getMode()) {\n case _util.AnnotationEditorType.FREETEXT:\n return new _freetext.FreeTextEditor(params);\n\n case _util.AnnotationEditorType.INK:\n return new _ink.InkEditor(params);\n }\n\n return null;\n }\n\n deserialize(data) {\n switch (data.annotationType) {\n case _util.AnnotationEditorType.FREETEXT:\n return _freetext.FreeTextEditor.deserialize(data, this);\n\n case _util.AnnotationEditorType.INK:\n return _ink.InkEditor.deserialize(data, this);\n }\n\n return null;\n }\n\n #createAndAddNewEditor(event) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY\n });\n\n if (editor) {\n this.add(editor);\n }\n\n return editor;\n }\n\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n\n isSelected(editor) {\n return this.#uiManager.isSelected(editor);\n }\n\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n\n pointerup(event) {\n const isMac = _tools.KeyboardManager.platform.isMac;\n\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n\n if (event.target !== this.div) {\n return;\n }\n\n if (!this.#hadPointerDown) {\n return;\n }\n\n this.#hadPointerDown = false;\n\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n\n this.#createAndAddNewEditor(event);\n }\n\n pointerdown(event) {\n const isMac = _tools.KeyboardManager.platform.isMac;\n\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n\n if (event.target !== this.div) {\n return;\n }\n\n this.#hadPointerDown = true;\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n\n drop(event) {\n const id = event.dataTransfer.getData(\"text/plain\");\n const editor = this.#uiManager.getEditor(id);\n\n if (!editor) {\n return;\n }\n\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n this.#changeParent(editor);\n const rect = this.div.getBoundingClientRect();\n const endX = event.clientX - rect.x;\n const endY = event.clientY - rect.y;\n editor.translate(endX - editor.startX, endY - editor.startY);\n this.moveEditorInDOM(editor);\n editor.div.focus();\n }\n\n dragover(event) {\n event.preventDefault();\n }\n\n destroy() {\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.setActiveEditor(null);\n }\n\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n editor.parent = null;\n }\n\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n\n #cleanup() {\n this.#isCleaningUp = true;\n\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n\n this.#isCleaningUp = false;\n }\n\n render(parameters) {\n this.viewport = parameters.viewport;\n (0, _tools.bindEvents)(this, this.div, [\"dragover\", \"drop\"]);\n this.setDimensions();\n\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n }\n\n this.updateMode();\n }\n\n update(parameters) {\n this.viewport = parameters.viewport;\n this.setDimensions();\n this.updateMode();\n }\n\n get scaleFactor() {\n return this.viewport.scale;\n }\n\n get pageDimensions() {\n const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox;\n const width = pageURx - pageLLx;\n const height = pageURy - pageLLy;\n return [width, height];\n }\n\n get viewportBaseDimensions() {\n const {\n width,\n height,\n rotation\n } = this.viewport;\n return rotation % 180 === 0 ? [width, height] : [height, width];\n }\n\n setDimensions() {\n const {\n width,\n height,\n rotation\n } = this.viewport;\n const flipOrientation = rotation % 180 !== 0,\n widthStr = Math.floor(width) + \"px\",\n heightStr = Math.floor(height) + \"px\";\n this.div.style.width = flipOrientation ? heightStr : widthStr;\n this.div.style.height = flipOrientation ? widthStr : heightStr;\n this.div.setAttribute(\"data-main-rotation\", rotation);\n }\n\n}\n\nexports.AnnotationEditorLayer = AnnotationEditorLayer;\n\n/***/ }),\n/* 23 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.FreeTextEditor = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _tools = __w_pdfjs_require__(7);\n\nvar _editor = __w_pdfjs_require__(6);\n\nclass FreeTextEditor extends _editor.AnnotationEditor {\n #boundEditorDivBlur = this.editorDivBlur.bind(this);\n #boundEditorDivFocus = this.editorDivFocus.bind(this);\n #boundEditorDivKeydown = this.editorDivKeydown.bind(this);\n #color;\n #content = \"\";\n #hasAlreadyBeenCommitted = false;\n #fontSize;\n static _freeTextDefaultContent = \"\";\n static _l10nPromise;\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static _keyboardManager = new _tools.KeyboardManager([[[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], FreeTextEditor.prototype.commitOrRemove]]);\n static _type = \"freetext\";\n\n constructor(params) {\n super({ ...params,\n name: \"freeTextEditor\"\n });\n this.#color = params.color || FreeTextEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n }\n\n static initialize(l10n) {\n this._l10nPromise = new Map([\"free_text_default_content\", \"editor_free_text_aria_label\"].map(str => [str, l10n.get(str)]));\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n\n static updateDefaultParams(type, value) {\n switch (type) {\n case _util.AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n\n case _util.AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n\n updateParams(type, value) {\n switch (type) {\n case _util.AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n\n case _util.AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n\n static get defaultPropertiesToUpdate() {\n return [[_util.AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [_util.AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor]];\n }\n\n get propertiesToUpdate() {\n return [[_util.AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [_util.AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];\n }\n\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parent.scaleFactor);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n\n const savedFontsize = this.#fontSize;\n this.parent.addCommands({\n cmd: () => {\n setFontsize(fontSize);\n },\n undo: () => {\n setFontsize(savedFontsize);\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n\n #updateColor(color) {\n const savedColor = this.#color;\n this.parent.addCommands({\n cmd: () => {\n this.#color = color;\n this.editorDiv.style.color = color;\n },\n undo: () => {\n this.#color = savedColor;\n this.editorDiv.style.color = savedColor;\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n\n getInitialTranslation() {\n return [-FreeTextEditor._internalPadding * this.parent.scaleFactor, -(FreeTextEditor._internalPadding + this.#fontSize) * this.parent.scaleFactor];\n }\n\n rebuild() {\n super.rebuild();\n\n if (this.div === null) {\n return;\n }\n\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n\n enableEditMode() {\n if (this.isInEditMode()) {\n return;\n }\n\n this.parent.setEditingState(false);\n this.parent.updateToolbar(_util.AnnotationEditorType.FREETEXT);\n super.enableEditMode();\n this.enableEditing();\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this.div.draggable = false;\n this.editorDiv.addEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.addEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.addEventListener(\"blur\", this.#boundEditorDivBlur);\n }\n\n disableEditMode() {\n if (!this.isInEditMode()) {\n return;\n }\n\n this.parent.setEditingState(true);\n super.disableEditMode();\n this.disableEditing();\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.draggable = true;\n this.editorDiv.removeEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.removeEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.removeEventListener(\"blur\", this.#boundEditorDivBlur);\n this.div.focus();\n this.isEditing = false;\n }\n\n focusin(event) {\n super.focusin(event);\n\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n\n onceAdded() {\n if (this.width) {\n return;\n }\n\n this.enableEditMode();\n this.editorDiv.focus();\n }\n\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n\n remove() {\n this.isEditing = false;\n this.parent.setEditingState(true);\n super.remove();\n }\n\n #extractText() {\n const divs = this.editorDiv.getElementsByTagName(\"div\");\n\n if (divs.length === 0) {\n return this.editorDiv.innerText;\n }\n\n const buffer = [];\n\n for (let i = 0, ii = divs.length; i < ii; i++) {\n const div = divs[i];\n const first = div.firstChild;\n\n if (first?.nodeName === \"#text\") {\n buffer.push(first.data);\n } else {\n buffer.push(\"\");\n }\n }\n\n return buffer.join(\"\\n\");\n }\n\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n const rect = this.div.getBoundingClientRect();\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n }\n\n commit() {\n super.commit();\n\n if (!this.#hasAlreadyBeenCommitted) {\n this.#hasAlreadyBeenCommitted = true;\n this.parent.addUndoableEditor(this);\n }\n\n this.disableEditMode();\n this.#content = this.#extractText().trimEnd();\n this.#setEditorDimensions();\n }\n\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n\n dblclick(event) {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n }\n\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n\n editorDivFocus(event) {\n this.isEditing = true;\n }\n\n editorDivBlur(event) {\n this.isEditing = false;\n }\n\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n\n render() {\n if (this.div) {\n return this.div;\n }\n\n let baseX, baseY;\n\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", `${this.id}-editor`);\n this.enableEditing();\n\n FreeTextEditor._l10nPromise.get(\"editor_free_text_aria_label\").then(msg => this.editorDiv?.setAttribute(\"aria-label\", msg));\n\n FreeTextEditor._l10nPromise.get(\"free_text_default_content\").then(msg => this.editorDiv?.setAttribute(\"default-content\", msg));\n\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--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 (0, _tools.bindEvents)(this, this.div, [\"dblclick\", \"keydown\"]);\n\n if (this.width) {\n const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\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 this.div.draggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this.div.draggable = false;\n this.editorDiv.contentEditable = true;\n }\n\n return this.div;\n }\n\n get contentDiv() {\n return this.editorDiv;\n }\n\n static deserialize(data, parent) {\n const editor = super.deserialize(data, parent);\n editor.#fontSize = data.fontSize;\n editor.#color = _util.Util.makeHexColor(...data.color);\n editor.#content = data.value;\n return editor;\n }\n\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n\n const padding = FreeTextEditor._internalPadding * this.parent.scaleFactor;\n const rect = this.getRect(padding, padding);\n\n const color = _editor.AnnotationEditor._colorManager.convert(getComputedStyle(this.editorDiv).color);\n\n return {\n annotationType: _util.AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#content,\n pageIndex: this.parent.pageIndex,\n rect,\n rotation: this.rotation\n };\n }\n\n}\n\nexports.FreeTextEditor = FreeTextEditor;\n\n/***/ }),\n/* 24 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.InkEditor = void 0;\nObject.defineProperty(exports, \"fitCurve\", ({\n enumerable: true,\n get: function () {\n return _pdfjsFitCurve.fitCurve;\n }\n}));\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _editor = __w_pdfjs_require__(6);\n\nvar _pdfjsFitCurve = __w_pdfjs_require__(25);\n\nvar _tools = __w_pdfjs_require__(7);\n\nconst RESIZER_SIZE = 16;\n\nclass InkEditor extends _editor.AnnotationEditor {\n #aspectRatio = 0;\n #baseHeight = 0;\n #baseWidth = 0;\n #boundCanvasPointermove = this.canvasPointermove.bind(this);\n #boundCanvasPointerleave = this.canvasPointerleave.bind(this);\n #boundCanvasPointerup = this.canvasPointerup.bind(this);\n #boundCanvasPointerdown = this.canvasPointerdown.bind(this);\n #disableEditing = false;\n #isCanvasInitialized = false;\n #lastPoint = null;\n #observer = null;\n #realWidth = 0;\n #realHeight = 0;\n #requestFrameCallback = null;\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 1;\n static _l10nPromise;\n static _type = \"ink\";\n\n constructor(params) {\n super({ ...params,\n name: \"inkEditor\"\n });\n this.color = params.color || null;\n this.thickness = params.thickness || null;\n this.opacity = params.opacity || null;\n this.paths = [];\n this.bezierPath2D = [];\n this.currentPath = [];\n this.scaleFactor = 1;\n this.translationX = this.translationY = 0;\n this.x = 0;\n this.y = 0;\n }\n\n static initialize(l10n) {\n this._l10nPromise = new Map([\"editor_ink_canvas_aria_label\", \"editor_ink_aria_label\"].map(str => [str, l10n.get(str)]));\n }\n\n static updateDefaultParams(type, value) {\n switch (type) {\n case _util.AnnotationEditorParamsType.INK_THICKNESS:\n InkEditor._defaultThickness = value;\n break;\n\n case _util.AnnotationEditorParamsType.INK_COLOR:\n InkEditor._defaultColor = value;\n break;\n\n case _util.AnnotationEditorParamsType.INK_OPACITY:\n InkEditor._defaultOpacity = value / 100;\n break;\n }\n }\n\n updateParams(type, value) {\n switch (type) {\n case _util.AnnotationEditorParamsType.INK_THICKNESS:\n this.#updateThickness(value);\n break;\n\n case _util.AnnotationEditorParamsType.INK_COLOR:\n this.#updateColor(value);\n break;\n\n case _util.AnnotationEditorParamsType.INK_OPACITY:\n this.#updateOpacity(value);\n break;\n }\n }\n\n static get defaultPropertiesToUpdate() {\n return [[_util.AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [_util.AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor], [_util.AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]];\n }\n\n get propertiesToUpdate() {\n return [[_util.AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [_util.AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor], [_util.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity))]];\n }\n\n #updateThickness(thickness) {\n const savedThickness = this.thickness;\n this.parent.addCommands({\n cmd: () => {\n this.thickness = thickness;\n this.#fitToContent();\n },\n undo: () => {\n this.thickness = savedThickness;\n this.#fitToContent();\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n\n #updateColor(color) {\n const savedColor = this.color;\n this.parent.addCommands({\n cmd: () => {\n this.color = color;\n this.#redraw();\n },\n undo: () => {\n this.color = savedColor;\n this.#redraw();\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.INK_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n\n #updateOpacity(opacity) {\n opacity /= 100;\n const savedOpacity = this.opacity;\n this.parent.addCommands({\n cmd: () => {\n this.opacity = opacity;\n this.#redraw();\n },\n undo: () => {\n this.opacity = savedOpacity;\n this.#redraw();\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.INK_OPACITY,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n\n rebuild() {\n super.rebuild();\n\n if (this.div === null) {\n return;\n }\n\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n this.#setCanvasDims();\n }\n\n this.#fitToContent();\n }\n\n remove() {\n if (this.canvas === null) {\n return;\n }\n\n if (!this.isEmpty()) {\n this.commit();\n }\n\n this.canvas.width = this.canvas.height = 0;\n this.canvas.remove();\n this.canvas = null;\n this.#observer.disconnect();\n this.#observer = null;\n super.remove();\n }\n\n enableEditMode() {\n if (this.#disableEditing || this.canvas === null) {\n return;\n }\n\n super.enableEditMode();\n this.div.draggable = false;\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n this.canvas.addEventListener(\"pointerup\", this.#boundCanvasPointerup);\n }\n\n disableEditMode() {\n if (!this.isInEditMode() || this.canvas === null) {\n return;\n }\n\n super.disableEditMode();\n this.div.draggable = !this.isEmpty();\n this.div.classList.remove(\"editing\");\n this.canvas.removeEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n this.canvas.removeEventListener(\"pointerup\", this.#boundCanvasPointerup);\n }\n\n onceAdded() {\n this.div.draggable = !this.isEmpty();\n }\n\n isEmpty() {\n return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0;\n }\n\n #getInitialBBox() {\n const {\n width,\n height,\n rotation\n } = this.parent.viewport;\n\n switch (rotation) {\n case 90:\n return [0, width, width, height];\n\n case 180:\n return [width, height, width, height];\n\n case 270:\n return [height, 0, width, height];\n\n default:\n return [0, 0, width, height];\n }\n }\n\n #setStroke() {\n this.ctx.lineWidth = this.thickness * this.parent.scaleFactor / this.scaleFactor;\n this.ctx.lineCap = \"round\";\n this.ctx.lineJoin = \"round\";\n this.ctx.miterLimit = 10;\n this.ctx.strokeStyle = `${this.color}${(0, _tools.opacityToHex)(this.opacity)}`;\n }\n\n #startDrawing(x, y) {\n this.isEditing = true;\n\n if (!this.#isCanvasInitialized) {\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.thickness ||= InkEditor._defaultThickness;\n this.color ||= InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor;\n this.opacity ??= InkEditor._defaultOpacity;\n }\n\n this.currentPath.push([x, y]);\n this.#lastPoint = null;\n this.#setStroke();\n this.ctx.beginPath();\n this.ctx.moveTo(x, y);\n\n this.#requestFrameCallback = () => {\n if (!this.#requestFrameCallback) {\n return;\n }\n\n if (this.#lastPoint) {\n if (this.isEmpty()) {\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n } else {\n this.#redraw();\n }\n\n this.ctx.lineTo(...this.#lastPoint);\n this.#lastPoint = null;\n this.ctx.stroke();\n }\n\n window.requestAnimationFrame(this.#requestFrameCallback);\n };\n\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n\n #draw(x, y) {\n const [lastX, lastY] = this.currentPath.at(-1);\n\n if (x === lastX && y === lastY) {\n return;\n }\n\n this.currentPath.push([x, y]);\n this.#lastPoint = [x, y];\n }\n\n #stopDrawing(x, y) {\n this.ctx.closePath();\n this.#requestFrameCallback = null;\n x = Math.min(Math.max(x, 0), this.canvas.width);\n y = Math.min(Math.max(y, 0), this.canvas.height);\n const [lastX, lastY] = this.currentPath.at(-1);\n\n if (x !== lastX || y !== lastY) {\n this.currentPath.push([x, y]);\n }\n\n let bezier;\n\n if (this.currentPath.length !== 1) {\n bezier = (0, _pdfjsFitCurve.fitCurve)(this.currentPath, 30, null);\n } else {\n const xy = [x, y];\n bezier = [[xy, xy.slice(), xy.slice(), xy]];\n }\n\n const path2D = InkEditor.#buildPath2D(bezier);\n this.currentPath.length = 0;\n\n const cmd = () => {\n this.paths.push(bezier);\n this.bezierPath2D.push(path2D);\n this.rebuild();\n };\n\n const undo = () => {\n this.paths.pop();\n this.bezierPath2D.pop();\n\n if (this.paths.length === 0) {\n this.remove();\n } else {\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n\n this.#fitToContent();\n }\n };\n\n this.parent.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n\n #redraw() {\n if (this.isEmpty()) {\n this.#updateTransform();\n return;\n }\n\n this.#setStroke();\n const {\n canvas,\n ctx\n } = this;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n this.#updateTransform();\n\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n }\n\n commit() {\n if (this.#disableEditing) {\n return;\n }\n\n super.commit();\n this.isEditing = false;\n this.disableEditMode();\n this.setInForeground();\n this.#disableEditing = true;\n this.div.classList.add(\"disabled\");\n this.#fitToContent(true);\n this.parent.addInkEditorIfNeeded(true);\n this.parent.moveEditorInDOM(this);\n this.div.focus();\n }\n\n focusin(event) {\n super.focusin(event);\n this.enableEditMode();\n }\n\n canvasPointerdown(event) {\n if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n return;\n }\n\n this.setInForeground();\n\n if (event.type !== \"mouse\") {\n this.div.focus();\n }\n\n event.stopPropagation();\n this.canvas.addEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n this.canvas.addEventListener(\"pointermove\", this.#boundCanvasPointermove);\n this.#startDrawing(event.offsetX, event.offsetY);\n }\n\n canvasPointermove(event) {\n event.stopPropagation();\n this.#draw(event.offsetX, event.offsetY);\n }\n\n canvasPointerup(event) {\n if (event.button !== 0) {\n return;\n }\n\n if (this.isInEditMode() && this.currentPath.length !== 0) {\n event.stopPropagation();\n this.#endDrawing(event);\n this.setInBackground();\n }\n }\n\n canvasPointerleave(event) {\n this.#endDrawing(event);\n this.setInBackground();\n }\n\n #endDrawing(event) {\n this.#stopDrawing(event.offsetX, event.offsetY);\n this.canvas.removeEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n this.canvas.removeEventListener(\"pointermove\", this.#boundCanvasPointermove);\n this.parent.addToAnnotationStorage(this);\n }\n\n #createCanvas() {\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = this.canvas.height = 0;\n this.canvas.className = \"inkEditorCanvas\";\n\n InkEditor._l10nPromise.get(\"editor_ink_canvas_aria_label\").then(msg => this.canvas?.setAttribute(\"aria-label\", msg));\n\n this.div.append(this.canvas);\n this.ctx = this.canvas.getContext(\"2d\");\n }\n\n #createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n\n if (rect.width && rect.height) {\n this.setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n }\n\n render() {\n if (this.div) {\n return this.div;\n }\n\n let baseX, baseY;\n\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n\n super.render();\n\n InkEditor._l10nPromise.get(\"editor_ink_aria_label\").then(msg => this.div?.setAttribute(\"aria-label\", msg));\n\n const [x, y, w, h] = this.#getInitialBBox();\n this.setAt(x, y, 0, 0);\n this.setDims(w, h);\n this.#createCanvas();\n\n if (this.width) {\n const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this.#redraw();\n this.#setMinDims();\n this.div.classList.add(\"disabled\");\n } else {\n this.div.classList.add(\"editing\");\n this.enableEditMode();\n }\n\n this.#createObserver();\n return this.div;\n }\n\n #setCanvasDims() {\n if (!this.#isCanvasInitialized) {\n return;\n }\n\n const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n this.canvas.width = Math.ceil(this.width * parentWidth);\n this.canvas.height = Math.ceil(this.height * parentHeight);\n this.#updateTransform();\n }\n\n setDimensions(width, height) {\n const roundedWidth = Math.round(width);\n const roundedHeight = Math.round(height);\n\n if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) {\n return;\n }\n\n this.#realWidth = roundedWidth;\n this.#realHeight = roundedHeight;\n this.canvas.style.visibility = \"hidden\";\n\n if (this.#aspectRatio && Math.abs(this.#aspectRatio - width / height) > 1e-2) {\n height = Math.ceil(width / this.#aspectRatio);\n this.setDims(width, height);\n }\n\n const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n\n if (this.#disableEditing) {\n this.#setScaleFactor(width, height);\n }\n\n this.#setCanvasDims();\n this.#redraw();\n this.canvas.style.visibility = \"visible\";\n }\n\n #setScaleFactor(width, height) {\n const padding = this.#getPadding();\n const scaleFactorW = (width - padding) / this.#baseWidth;\n const scaleFactorH = (height - padding) / this.#baseHeight;\n this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n }\n\n #updateTransform() {\n const padding = this.#getPadding() / 2;\n this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding);\n }\n\n static #buildPath2D(bezier) {\n const path2D = new Path2D();\n\n for (let i = 0, ii = bezier.length; i < ii; i++) {\n const [first, control1, control2, second] = bezier[i];\n\n if (i === 0) {\n path2D.moveTo(...first);\n }\n\n path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]);\n }\n\n return path2D;\n }\n\n #serializePaths(s, tx, ty, h) {\n const NUMBER_OF_POINTS_ON_BEZIER_CURVE = 4;\n const paths = [];\n const padding = this.thickness / 2;\n let buffer, points;\n\n for (const bezier of this.paths) {\n buffer = [];\n points = [];\n\n for (let i = 0, ii = bezier.length; i < ii; i++) {\n const [first, control1, control2, second] = bezier[i];\n const p10 = s * (first[0] + tx) + padding;\n const p11 = h - s * (first[1] + ty) - padding;\n const p20 = s * (control1[0] + tx) + padding;\n const p21 = h - s * (control1[1] + ty) - padding;\n const p30 = s * (control2[0] + tx) + padding;\n const p31 = h - s * (control2[1] + ty) - padding;\n const p40 = s * (second[0] + tx) + padding;\n const p41 = h - s * (second[1] + ty) - padding;\n\n if (i === 0) {\n buffer.push(p10, p11);\n points.push(p10, p11);\n }\n\n buffer.push(p20, p21, p30, p31, p40, p41);\n this.#extractPointsOnBezier(p10, p11, p20, p21, p30, p31, p40, p41, NUMBER_OF_POINTS_ON_BEZIER_CURVE, points);\n }\n\n paths.push({\n bezier: buffer,\n points\n });\n }\n\n return paths;\n }\n\n #extractPointsOnBezier(p10, p11, p20, p21, p30, p31, p40, p41, n, points) {\n if (this.#isAlmostFlat(p10, p11, p20, p21, p30, p31, p40, p41)) {\n points.push(p40, p41);\n return;\n }\n\n for (let i = 1; i < n - 1; i++) {\n const t = i / n;\n const mt = 1 - t;\n let q10 = t * p10 + mt * p20;\n let q11 = t * p11 + mt * p21;\n let q20 = t * p20 + mt * p30;\n let q21 = t * p21 + mt * p31;\n const q30 = t * p30 + mt * p40;\n const q31 = t * p31 + mt * p41;\n q10 = t * q10 + mt * q20;\n q11 = t * q11 + mt * q21;\n q20 = t * q20 + mt * q30;\n q21 = t * q21 + mt * q31;\n q10 = t * q10 + mt * q20;\n q11 = t * q11 + mt * q21;\n points.push(q10, q11);\n }\n\n points.push(p40, p41);\n }\n\n #isAlmostFlat(p10, p11, p20, p21, p30, p31, p40, p41) {\n const tol = 10;\n const ax = (3 * p20 - 2 * p10 - p40) ** 2;\n const ay = (3 * p21 - 2 * p11 - p41) ** 2;\n const bx = (3 * p30 - p10 - 2 * p40) ** 2;\n const by = (3 * p31 - p11 - 2 * p41) ** 2;\n return Math.max(ax, bx) + Math.max(ay, by) <= tol;\n }\n\n #getBbox() {\n let xMin = Infinity;\n let xMax = -Infinity;\n let yMin = Infinity;\n let yMax = -Infinity;\n\n for (const path of this.paths) {\n for (const [first, control1, control2, second] of path) {\n const bbox = _util.Util.bezierBoundingBox(...first, ...control1, ...control2, ...second);\n\n xMin = Math.min(xMin, bbox[0]);\n yMin = Math.min(yMin, bbox[1]);\n xMax = Math.max(xMax, bbox[2]);\n yMax = Math.max(yMax, bbox[3]);\n }\n }\n\n return [xMin, yMin, xMax, yMax];\n }\n\n #getPadding() {\n return this.#disableEditing ? Math.ceil(this.thickness * this.parent.scaleFactor) : 0;\n }\n\n #fitToContent(firstTime = false) {\n if (this.isEmpty()) {\n return;\n }\n\n if (!this.#disableEditing) {\n this.#redraw();\n return;\n }\n\n const bbox = this.#getBbox();\n const padding = this.#getPadding();\n this.#baseWidth = Math.max(RESIZER_SIZE, bbox[2] - bbox[0]);\n this.#baseHeight = Math.max(RESIZER_SIZE, bbox[3] - bbox[1]);\n const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.#aspectRatio = width / height;\n this.#setMinDims();\n const prevTranslationX = this.translationX;\n const prevTranslationY = this.translationY;\n this.translationX = -bbox[0];\n this.translationY = -bbox[1];\n this.#setCanvasDims();\n this.#redraw();\n this.#realWidth = width;\n this.#realHeight = height;\n this.setDims(width, height);\n const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding);\n }\n\n #setMinDims() {\n const {\n style\n } = this.div;\n\n if (this.#aspectRatio >= 1) {\n style.minHeight = `${RESIZER_SIZE}px`;\n style.minWidth = `${Math.round(this.#aspectRatio * RESIZER_SIZE)}px`;\n } else {\n style.minWidth = `${RESIZER_SIZE}px`;\n style.minHeight = `${Math.round(RESIZER_SIZE / this.#aspectRatio)}px`;\n }\n }\n\n static deserialize(data, parent) {\n const editor = super.deserialize(data, parent);\n editor.thickness = data.thickness;\n editor.color = _util.Util.makeHexColor(...data.color);\n editor.opacity = data.opacity;\n const [pageWidth, pageHeight] = parent.pageDimensions;\n const width = editor.width * pageWidth;\n const height = editor.height * pageHeight;\n const scaleFactor = parent.scaleFactor;\n const padding = data.thickness / 2;\n editor.#aspectRatio = width / height;\n editor.#disableEditing = true;\n editor.#realWidth = Math.round(width);\n editor.#realHeight = Math.round(height);\n\n for (const {\n bezier\n } of data.paths) {\n const path = [];\n editor.paths.push(path);\n let p0 = scaleFactor * (bezier[0] - padding);\n let p1 = scaleFactor * (height - bezier[1] - padding);\n\n for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n const p10 = scaleFactor * (bezier[i] - padding);\n const p11 = scaleFactor * (height - bezier[i + 1] - padding);\n const p20 = scaleFactor * (bezier[i + 2] - padding);\n const p21 = scaleFactor * (height - bezier[i + 3] - padding);\n const p30 = scaleFactor * (bezier[i + 4] - padding);\n const p31 = scaleFactor * (height - bezier[i + 5] - padding);\n path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]);\n p0 = p30;\n p1 = p31;\n }\n\n const path2D = this.#buildPath2D(path);\n editor.bezierPath2D.push(path2D);\n }\n\n const bbox = editor.#getBbox();\n editor.#baseWidth = Math.max(RESIZER_SIZE, bbox[2] - bbox[0]);\n editor.#baseHeight = Math.max(RESIZER_SIZE, bbox[3] - bbox[1]);\n editor.#setScaleFactor(width, height);\n return editor;\n }\n\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n\n const rect = this.getRect(0, 0);\n const height = this.rotation % 180 === 0 ? rect[3] - rect[1] : rect[2] - rect[0];\n\n const color = _editor.AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n\n return {\n annotationType: _util.AnnotationEditorType.INK,\n color,\n thickness: this.thickness,\n opacity: this.opacity,\n paths: this.#serializePaths(this.scaleFactor / this.parent.scaleFactor, this.translationX, this.translationY, height),\n pageIndex: this.parent.pageIndex,\n rect,\n rotation: this.rotation\n };\n }\n\n}\n\nexports.InkEditor = InkEditor;\n\n/***/ }),\n/* 25 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.fitCurve = void 0;\n\nconst fitCurve = __w_pdfjs_require__(26);\n\nexports.fitCurve = fitCurve;\n\n/***/ }),\n/* 26 */\n/***/ ((module) => {\n\n\n\nfunction fitCurve(points, maxError, progressCallback) {\n if (!Array.isArray(points)) {\n throw new TypeError(\"First argument should be an array\");\n }\n\n points.forEach(point => {\n if (!Array.isArray(point) || point.some(item => typeof item !== 'number') || point.length !== points[0].length) {\n throw Error(\"Each point should be an array of numbers. Each point should have the same amount of numbers.\");\n }\n });\n points = points.filter((point, i) => i === 0 || !point.every((val, j) => val === points[i - 1][j]));\n\n if (points.length < 2) {\n return [];\n }\n\n const len = points.length;\n const leftTangent = createTangent(points[1], points[0]);\n const rightTangent = createTangent(points[len - 2], points[len - 1]);\n return fitCubic(points, leftTangent, rightTangent, maxError, progressCallback);\n}\n\nfunction fitCubic(points, leftTangent, rightTangent, error, progressCallback) {\n const MaxIterations = 20;\n var bezCurve, u, uPrime, maxError, prevErr, splitPoint, prevSplit, centerVector, toCenterTangent, fromCenterTangent, beziers, dist, i;\n\n if (points.length === 2) {\n dist = maths.vectorLen(maths.subtract(points[0], points[1])) / 3.0;\n bezCurve = [points[0], maths.addArrays(points[0], maths.mulItems(leftTangent, dist)), maths.addArrays(points[1], maths.mulItems(rightTangent, dist)), points[1]];\n return [bezCurve];\n }\n\n u = chordLengthParameterize(points);\n [bezCurve, maxError, splitPoint] = generateAndReport(points, u, u, leftTangent, rightTangent, progressCallback);\n\n if (maxError === 0 || maxError < error) {\n return [bezCurve];\n }\n\n if (maxError < error * error) {\n uPrime = u;\n prevErr = maxError;\n prevSplit = splitPoint;\n\n for (i = 0; i < MaxIterations; i++) {\n uPrime = reparameterize(bezCurve, points, uPrime);\n [bezCurve, maxError, splitPoint] = generateAndReport(points, u, uPrime, leftTangent, rightTangent, progressCallback);\n\n if (maxError < error) {\n return [bezCurve];\n } else if (splitPoint === prevSplit) {\n let errChange = maxError / prevErr;\n\n if (errChange > .9999 && errChange < 1.0001) {\n break;\n }\n }\n\n prevErr = maxError;\n prevSplit = splitPoint;\n }\n }\n\n beziers = [];\n centerVector = maths.subtract(points[splitPoint - 1], points[splitPoint + 1]);\n\n if (centerVector.every(val => val === 0)) {\n centerVector = maths.subtract(points[splitPoint - 1], points[splitPoint]);\n [centerVector[0], centerVector[1]] = [-centerVector[1], centerVector[0]];\n }\n\n toCenterTangent = maths.normalize(centerVector);\n fromCenterTangent = maths.mulItems(toCenterTangent, -1);\n beziers = beziers.concat(fitCubic(points.slice(0, splitPoint + 1), leftTangent, toCenterTangent, error, progressCallback));\n beziers = beziers.concat(fitCubic(points.slice(splitPoint), fromCenterTangent, rightTangent, error, progressCallback));\n return beziers;\n}\n\n;\n\nfunction generateAndReport(points, paramsOrig, paramsPrime, leftTangent, rightTangent, progressCallback) {\n var bezCurve, maxError, splitPoint;\n bezCurve = generateBezier(points, paramsPrime, leftTangent, rightTangent, progressCallback);\n [maxError, splitPoint] = computeMaxError(points, bezCurve, paramsOrig);\n\n if (progressCallback) {\n progressCallback({\n bez: bezCurve,\n points: points,\n params: paramsOrig,\n maxErr: maxError,\n maxPoint: splitPoint\n });\n }\n\n return [bezCurve, maxError, splitPoint];\n}\n\nfunction generateBezier(points, parameters, leftTangent, rightTangent) {\n var bezCurve,\n A,\n a,\n C,\n X,\n det_C0_C1,\n det_C0_X,\n det_X_C1,\n alpha_l,\n alpha_r,\n epsilon,\n segLength,\n i,\n len,\n tmp,\n u,\n ux,\n firstPoint = points[0],\n lastPoint = points[points.length - 1];\n bezCurve = [firstPoint, null, null, lastPoint];\n A = maths.zeros_Xx2x2(parameters.length);\n\n for (i = 0, len = parameters.length; i < len; i++) {\n u = parameters[i];\n ux = 1 - u;\n a = A[i];\n a[0] = maths.mulItems(leftTangent, 3 * u * (ux * ux));\n a[1] = maths.mulItems(rightTangent, 3 * ux * (u * u));\n }\n\n C = [[0, 0], [0, 0]];\n X = [0, 0];\n\n for (i = 0, len = points.length; i < len; i++) {\n u = parameters[i];\n a = A[i];\n C[0][0] += maths.dot(a[0], a[0]);\n C[0][1] += maths.dot(a[0], a[1]);\n C[1][0] += maths.dot(a[0], a[1]);\n C[1][1] += maths.dot(a[1], a[1]);\n tmp = maths.subtract(points[i], bezier.q([firstPoint, firstPoint, lastPoint, lastPoint], u));\n X[0] += maths.dot(a[0], tmp);\n X[1] += maths.dot(a[1], tmp);\n }\n\n det_C0_C1 = C[0][0] * C[1][1] - C[1][0] * C[0][1];\n det_C0_X = C[0][0] * X[1] - C[1][0] * X[0];\n det_X_C1 = X[0] * C[1][1] - X[1] * C[0][1];\n alpha_l = det_C0_C1 === 0 ? 0 : det_X_C1 / det_C0_C1;\n alpha_r = det_C0_C1 === 0 ? 0 : det_C0_X / det_C0_C1;\n segLength = maths.vectorLen(maths.subtract(firstPoint, lastPoint));\n epsilon = 1.0e-6 * segLength;\n\n if (alpha_l < epsilon || alpha_r < epsilon) {\n bezCurve[1] = maths.addArrays(firstPoint, maths.mulItems(leftTangent, segLength / 3.0));\n bezCurve[2] = maths.addArrays(lastPoint, maths.mulItems(rightTangent, segLength / 3.0));\n } else {\n bezCurve[1] = maths.addArrays(firstPoint, maths.mulItems(leftTangent, alpha_l));\n bezCurve[2] = maths.addArrays(lastPoint, maths.mulItems(rightTangent, alpha_r));\n }\n\n return bezCurve;\n}\n\n;\n\nfunction reparameterize(bezier, points, parameters) {\n return parameters.map((p, i) => newtonRaphsonRootFind(bezier, points[i], p));\n}\n\n;\n\nfunction newtonRaphsonRootFind(bez, point, u) {\n var d = maths.subtract(bezier.q(bez, u), point),\n qprime = bezier.qprime(bez, u),\n numerator = maths.mulMatrix(d, qprime),\n denominator = maths.sum(maths.squareItems(qprime)) + 2 * maths.mulMatrix(d, bezier.qprimeprime(bez, u));\n\n if (denominator === 0) {\n return u;\n } else {\n return u - numerator / denominator;\n }\n}\n\n;\n\nfunction chordLengthParameterize(points) {\n var u = [],\n currU,\n prevU,\n prevP;\n points.forEach((p, i) => {\n currU = i ? prevU + maths.vectorLen(maths.subtract(p, prevP)) : 0;\n u.push(currU);\n prevU = currU;\n prevP = p;\n });\n u = u.map(x => x / prevU);\n return u;\n}\n\n;\n\nfunction computeMaxError(points, bez, parameters) {\n var dist, maxDist, splitPoint, v, i, count, point, t;\n maxDist = 0;\n splitPoint = Math.floor(points.length / 2);\n const t_distMap = mapTtoRelativeDistances(bez, 10);\n\n for (i = 0, count = points.length; i < count; i++) {\n point = points[i];\n t = find_t(bez, parameters[i], t_distMap, 10);\n v = maths.subtract(bezier.q(bez, t), point);\n dist = v[0] * v[0] + v[1] * v[1];\n\n if (dist > maxDist) {\n maxDist = dist;\n splitPoint = i;\n }\n }\n\n return [maxDist, splitPoint];\n}\n\n;\n\nvar mapTtoRelativeDistances = function (bez, B_parts) {\n var B_t_curr;\n var B_t_dist = [0];\n var B_t_prev = bez[0];\n var sumLen = 0;\n\n for (var i = 1; i <= B_parts; i++) {\n B_t_curr = bezier.q(bez, i / B_parts);\n sumLen += maths.vectorLen(maths.subtract(B_t_curr, B_t_prev));\n B_t_dist.push(sumLen);\n B_t_prev = B_t_curr;\n }\n\n B_t_dist = B_t_dist.map(x => x / sumLen);\n return B_t_dist;\n};\n\nfunction find_t(bez, param, t_distMap, B_parts) {\n if (param < 0) {\n return 0;\n }\n\n if (param > 1) {\n return 1;\n }\n\n var lenMax, lenMin, tMax, tMin, t;\n\n for (var i = 1; i <= B_parts; i++) {\n if (param <= t_distMap[i]) {\n tMin = (i - 1) / B_parts;\n tMax = i / B_parts;\n lenMin = t_distMap[i - 1];\n lenMax = t_distMap[i];\n t = (param - lenMin) / (lenMax - lenMin) * (tMax - tMin) + tMin;\n break;\n }\n }\n\n return t;\n}\n\nfunction createTangent(pointA, pointB) {\n return maths.normalize(maths.subtract(pointA, pointB));\n}\n\nclass maths {\n static zeros_Xx2x2(x) {\n var zs = [];\n\n while (x--) {\n zs.push([0, 0]);\n }\n\n return zs;\n }\n\n static mulItems(items, multiplier) {\n return items.map(x => x * multiplier);\n }\n\n static mulMatrix(m1, m2) {\n return m1.reduce((sum, x1, i) => sum + x1 * m2[i], 0);\n }\n\n static subtract(arr1, arr2) {\n return arr1.map((x1, i) => x1 - arr2[i]);\n }\n\n static addArrays(arr1, arr2) {\n return arr1.map((x1, i) => x1 + arr2[i]);\n }\n\n static addItems(items, addition) {\n return items.map(x => x + addition);\n }\n\n static sum(items) {\n return items.reduce((sum, x) => sum + x);\n }\n\n static dot(m1, m2) {\n return maths.mulMatrix(m1, m2);\n }\n\n static vectorLen(v) {\n return Math.hypot(...v);\n }\n\n static divItems(items, divisor) {\n return items.map(x => x / divisor);\n }\n\n static squareItems(items) {\n return items.map(x => x * x);\n }\n\n static normalize(v) {\n return this.divItems(v, this.vectorLen(v));\n }\n\n}\n\nclass bezier {\n static q(ctrlPoly, t) {\n var tx = 1.0 - t;\n var pA = maths.mulItems(ctrlPoly[0], tx * tx * tx),\n pB = maths.mulItems(ctrlPoly[1], 3 * tx * tx * t),\n pC = maths.mulItems(ctrlPoly[2], 3 * tx * t * t),\n pD = maths.mulItems(ctrlPoly[3], t * t * t);\n return maths.addArrays(maths.addArrays(pA, pB), maths.addArrays(pC, pD));\n }\n\n static qprime(ctrlPoly, t) {\n var tx = 1.0 - t;\n var pA = maths.mulItems(maths.subtract(ctrlPoly[1], ctrlPoly[0]), 3 * tx * tx),\n pB = maths.mulItems(maths.subtract(ctrlPoly[2], ctrlPoly[1]), 6 * tx * t),\n pC = maths.mulItems(maths.subtract(ctrlPoly[3], ctrlPoly[2]), 3 * t * t);\n return maths.addArrays(maths.addArrays(pA, pB), pC);\n }\n\n static qprimeprime(ctrlPoly, t) {\n return maths.addArrays(maths.mulItems(maths.addArrays(maths.subtract(ctrlPoly[2], maths.mulItems(ctrlPoly[1], 2)), ctrlPoly[0]), 6 * (1.0 - t)), maths.mulItems(maths.addArrays(maths.subtract(ctrlPoly[3], maths.mulItems(ctrlPoly[2], 2)), ctrlPoly[1]), 6 * t));\n }\n\n}\n\nmodule.exports = fitCurve;\nmodule.exports.fitCubic = fitCubic;\nmodule.exports.createTangent = createTangent;\n\n/***/ }),\n/* 27 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.AnnotationLayer = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _display_utils = __w_pdfjs_require__(8);\n\nvar _annotation_storage = __w_pdfjs_require__(5);\n\nvar _scripting_utils = __w_pdfjs_require__(28);\n\nvar _xfa_layer = __w_pdfjs_require__(29);\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\n\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n}\n\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case _util.AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case _util.AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case _util.AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n\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\n return new PushButtonWidgetAnnotationElement(parameters);\n\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n }\n\n return new WidgetAnnotationElement(parameters);\n\n case _util.AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case _util.AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case _util.AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case _util.AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case _util.AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case _util.AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case _util.AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case _util.AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case _util.AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case _util.AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case _util.AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case _util.AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case _util.AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case _util.AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case _util.AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n\n}\n\nclass AnnotationElement {\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.page = parameters.page;\n this.viewport = parameters.viewport;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.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._mouseState = parameters.mouseState;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n\n if (createQuadrilaterals) {\n this.quadrilaterals = this._createQuadrilaterals(ignoreBorder);\n }\n }\n\n _createContainer(ignoreBorder = false) {\n const data = this.data,\n page = this.page,\n viewport = this.viewport;\n const container = document.createElement(\"section\");\n const {\n width,\n height\n } = getRectDims(data.rect);\n const [pageLLx, pageLLy, pageURx, pageURy] = viewport.viewBox;\n const pageWidth = pageURx - pageLLx;\n const pageHeight = pageURy - pageLLy;\n container.setAttribute(\"data-annotation-id\", data.id);\n\n const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n container.style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case _util.AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case _util.AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case _util.AnnotationBorderStyleType.BEVELED:\n (0, _util.warn)(\"Unimplemented border style: beveled\");\n break;\n\n case _util.AnnotationBorderStyleType.INSET:\n (0, _util.warn)(\"Unimplemented border style: inset\");\n break;\n\n case _util.AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n const borderColor = data.borderColor || null;\n\n if (borderColor) {\n container.style.borderColor = _util.Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = `${100 * (rect[0] - pageLLx) / pageWidth}%`;\n container.style.top = `${100 * (rect[1] - pageLLy) / pageHeight}%`;\n const {\n rotation\n } = data;\n\n if (data.hasOwnCanvas || rotation === 0) {\n container.style.width = `${100 * width / pageWidth}%`;\n container.style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n\n return container;\n }\n\n setRotation(angle, container = this.container) {\n const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox;\n const pageWidth = pageURx - pageLLx;\n const pageHeight = pageURy - pageLLy;\n const {\n width,\n height\n } = getRectDims(this.data.rect);\n let elementWidth, elementHeight;\n\n if (angle % 180 === 0) {\n elementWidth = 100 * width / pageWidth;\n elementHeight = 100 * height / pageHeight;\n } else {\n elementWidth = 100 * height / pageWidth;\n elementHeight = 100 * width / pageHeight;\n }\n\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n event.target.style[styleName] = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1));\n };\n\n return (0, _util.shadow)(this, \"_commonActions\", {\n display: event => {\n const hidden = event.detail.display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden,\n print: event.detail.display === 0 || event.detail.display === 3\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n print: event.detail.print\n });\n },\n hidden: event => {\n this.container.style.visibility = event.detail.hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden: event.detail.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 if (event.detail.readonly) {\n event.target.setAttribute(\"readonly\", \"\");\n } else {\n event.target.removeAttribute(\"readonly\");\n }\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\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n\n if (action) {\n action(jsEvent);\n }\n }\n }\n\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n\n if (!storedData) {\n return;\n }\n\n const commonActions = this._commonActions;\n\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n\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\n _createQuadrilaterals(ignoreBorder = false) {\n if (!this.data.quadPoints) {\n return null;\n }\n\n const quadrilaterals = [];\n const savedRect = this.data.rect;\n\n for (const quadPoint of this.data.quadPoints) {\n this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y];\n quadrilaterals.push(this._createContainer(ignoreBorder));\n }\n\n this.data.rect = savedRect;\n return quadrilaterals;\n }\n\n _createPopup(trigger, data) {\n let container = this.container;\n\n if (this.quadrilaterals) {\n trigger = trigger || this.quadrilaterals;\n container = this.quadrilaterals[0];\n }\n\n if (!trigger) {\n trigger = document.createElement(\"div\");\n trigger.className = \"popupTriggerArea\";\n container.append(trigger);\n }\n\n const popupElement = new PopupElement({\n container,\n trigger,\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n hideWrapper: true\n });\n const popup = popupElement.render();\n popup.style.left = \"100%\";\n container.append(popup);\n }\n\n _renderQuadrilaterals(className) {\n for (const quadrilateral of this.quadrilaterals) {\n quadrilateral.className = className;\n }\n\n return this.quadrilaterals;\n }\n\n render() {\n (0, _util.unreachable)(\"Abstract method `AnnotationElement.render` called\");\n }\n\n _getElementsByName(name, skipId = null) {\n const fields = [];\n\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n\n if (id === skipId) {\n continue;\n }\n\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n (0, _util.warn)(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n\n return fields;\n }\n\n for (const domElement of document.getElementsByName(name)) {\n const {\n id,\n exportValue\n } = domElement;\n\n if (id === skipId) {\n continue;\n }\n\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n\n return fields;\n }\n\n static get platform() {\n const platform = typeof navigator !== \"undefined\" ? navigator.platform : \"\";\n return (0, _util.shadow)(this, \"platform\", {\n isWin: platform.includes(\"Win\"),\n isMac: platform.includes(\"Mac\")\n });\n }\n\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\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\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\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n\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\n isBound = true;\n }\n\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n\n isBound = true;\n }\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"linkAnnotation\").map((quadrilateral, index) => {\n const linkElement = index === 0 ? link : link.cloneNode();\n quadrilateral.append(linkElement);\n return quadrilateral;\n });\n }\n\n this.container.className = \"linkAnnotation\";\n\n if (isBound) {\n this.container.append(link);\n }\n\n return this.container;\n }\n\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n\n return false;\n };\n\n if (destination || destination === \"\") {\n link.className = \"internalLink\";\n }\n }\n\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n\n link.className = \"internalLink\";\n }\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\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n\n if (!jsName) {\n continue;\n }\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\n if (!link.onclick) {\n link.onclick = () => false;\n }\n\n link.className = \"internalLink\";\n }\n\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n\n link.className = \"internalLink\";\n\n if (!this._fieldObjects) {\n (0, _util.warn)(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n\n return;\n }\n\n link.onclick = () => {\n if (otherClickAction) {\n otherClickAction();\n }\n\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\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\n const storage = this.annotationStorage;\n const allIds = [];\n\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\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\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n\n default:\n continue;\n }\n\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n (0, _util.warn)(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\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\n return false;\n };\n }\n\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable\n });\n }\n\n render() {\n this.container.className = \"textAnnotation\";\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.alt = \"[{{type}} Annotation]\";\n image.dataset.l10nId = \"text_annotation_type\";\n image.dataset.l10nArgs = JSON.stringify({\n type: this.data.name\n });\n\n if (!this.data.hasPopup) {\n this._createPopup(image, this.data);\n }\n\n this.container.append(image);\n return this.container;\n }\n\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n if (this.data.alternativeText) {\n this.container.title = this.data.alternativeText;\n }\n\n return this.container;\n }\n\n _getKeyModifier(event) {\n const {\n isWin,\n isMac\n } = AnnotationElement.platform;\n return isWin && event.ctrlKey || isMac && event.metaKey;\n }\n\n _setEventListener(element, 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 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\n _setEventListeners(element, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n this._setEventListener(element, baseName, eventName, getter);\n }\n }\n }\n\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : _util.Util.makeHexColor(color[0], color[1], color[2]);\n }\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 || DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1]);\n const numberOfLines = Math.round(height / (_util.LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, Math.round(lineHeight / _util.LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1]);\n computedFontSize = Math.min(fontSize, Math.round(height / _util.LINE_FACTOR));\n }\n\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n\n element.setAttribute(\"aria-required\", isRequired);\n }\n\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.className = \"textWidgetAnnotation\";\n let element = null;\n\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.formattedValue || storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n\n const elementData = {\n userValue: textContent,\n formattedValue: null,\n valueOnFocus: \"\"\n };\n\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = textContent;\n\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", textContent);\n\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\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\n this._setRequired(element, this.data.required);\n\n if (maxLen) {\n element.maxLength = maxLen;\n }\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 });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n\n event.target.scrollLeft = 0;\n };\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.userValue) {\n event.target.value = elementData.userValue;\n }\n\n elementData.valueOnFocus = event.target.value;\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\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\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n\n storage.setValue(id, {\n formattedValue\n });\n },\n\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n\n if (!value || value.length <= charLimit) {\n return;\n }\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\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n let commitKey = -1;\n\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\") {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n commitKey = 3;\n }\n\n if (commitKey === -1) {\n return;\n }\n\n const {\n value\n } = event.target;\n\n if (elementData.valueOnFocus === value) {\n return;\n }\n\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 const {\n value\n } = event.target;\n elementData.userValue = value;\n\n if (this._mouseState.isDown && elementData.valueOnFocus !== value) {\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: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n\n _blurListener(event);\n });\n\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\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\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n\n if (match) {\n selStart -= match[0].length;\n }\n\n break;\n }\n\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n\n if (match) {\n selEnd += match[0].length;\n }\n\n break;\n }\n\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n\n break;\n\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n\n break;\n }\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\n this._setEventListeners(element, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\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(--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 }\n\n this._setTextStyle(element);\n\n this._setBackgroundColor(element);\n\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\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\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n\n this.container.className = \"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\n this._setRequired(element, this.data.required);\n\n element.type = \"checkbox\";\n element.name = data.fieldName;\n\n if (value) {\n element.setAttribute(\"checked\", true);\n }\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\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n\n storage.setValue(checkbox.id, {\n value: curChecked\n });\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\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 };\n\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(element, [[\"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\n this._setBackgroundColor(element);\n\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n\n render() {\n this.container.className = \"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\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\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\n this._setRequired(element, this.data.required);\n\n element.type = \"radio\";\n element.name = data.fieldName;\n\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\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\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\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(element, [[\"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\n this._setBackgroundColor(element);\n\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n\n render() {\n const container = super.render();\n container.className = \"buttonWidgetAnnotation pushButton\";\n\n if (this.data.alternativeText) {\n container.title = this.data.alternativeText;\n }\n\n const linkElement = container.lastChild;\n\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n\n return container;\n }\n\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n\n render() {\n this.container.className = \"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\n this._setRequired(selectElement, this.data.required);\n\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\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\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n\n selectElement.append(optionElement);\n }\n\n let removeEmptyEntry = null;\n\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\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n\n const getValue = (event, isExport) => {\n const name = isExport ? \"value\" : \"textContent\";\n const options = event.target.options;\n\n if (!event.target.multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => {\n return {\n displayValue: option.textContent,\n exportValue: option.value\n };\n });\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\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n\n storage.setValue(id, {\n value: getValue(event, true)\n });\n },\n\n multipleSelection(event) {\n selectElement.multiple = true;\n },\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\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n\n if (i === -1) {\n options[0].selected = true;\n }\n }\n\n storage.setValue(id, {\n value: getValue(event, true),\n items: getItems(event)\n });\n },\n\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n\n storage.setValue(id, {\n value: null,\n items: []\n });\n },\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\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n\n storage.setValue(id, {\n value: getValue(event, true),\n items: getItems(event)\n });\n },\n\n items(event) {\n const {\n items\n } = event.detail;\n\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\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\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n\n storage.setValue(id, {\n value: getValue(event, true),\n items: getItems(event)\n });\n },\n\n indices(event) {\n const indices = new Set(event.detail.indices);\n\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n\n storage.setValue(id, {\n value: getValue(event, true)\n });\n },\n\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n\n };\n\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(event, true);\n const value = getValue(event, false);\n storage.setValue(id, {\n value: exportValue\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n changeEx: exportValue,\n willCommit: true,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n\n this._setEventListeners(selectElement, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"]], event => event.target.checked);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(event, true)\n });\n });\n }\n\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n\n this._setBackgroundColor(selectElement);\n\n this._setDefaultPropertiesFromJS(selectElement);\n\n this.container.append(selectElement);\n return this.container;\n }\n\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable\n });\n }\n\n render() {\n const IGNORE_TYPES = [\"Line\", \"Square\", \"Circle\", \"PolyLine\", \"Polygon\", \"Ink\"];\n this.container.className = \"popupAnnotation\";\n\n if (IGNORE_TYPES.includes(this.data.parentType)) {\n return this.container;\n }\n\n const selector = `[data-annotation-id=\"${this.data.parentId}\"]`;\n const parentElements = this.layer.querySelectorAll(selector);\n\n if (parentElements.length === 0) {\n return this.container;\n }\n\n const popup = new PopupElement({\n container: this.container,\n trigger: Array.from(parentElements),\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 });\n const page = this.page;\n\n const rect = _util.Util.normalizeRect([this.data.parentRect[0], page.view[3] - this.data.parentRect[1] + page.view[1], this.data.parentRect[2], page.view[3] - this.data.parentRect[3] + page.view[1]]);\n\n const popupLeft = rect[0] + this.data.parentRect[2] - this.data.parentRect[0];\n const popupTop = rect[1];\n const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox;\n const pageWidth = pageURx - pageLLx;\n const pageHeight = pageURy - pageLLy;\n this.container.style.left = `${100 * (popupLeft - pageLLx) / pageWidth}%`;\n this.container.style.top = `${100 * (popupTop - pageLLy) / pageHeight}%`;\n this.container.append(popup.render());\n return this.container;\n }\n\n}\n\nclass PopupElement {\n constructor(parameters) {\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.titleObj = parameters.titleObj;\n this.modificationDate = parameters.modificationDate;\n this.contentsObj = parameters.contentsObj;\n this.richText = parameters.richText;\n this.hideWrapper = parameters.hideWrapper || false;\n this.pinned = false;\n }\n\n render() {\n const BACKGROUND_ENLIGHT = 0.7;\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"popupWrapper\";\n this.hideElement = this.hideWrapper ? wrapper : this.container;\n this.hideElement.hidden = true;\n const popup = document.createElement(\"div\");\n popup.className = \"popup\";\n const color = this.color;\n\n if (color) {\n const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = _util.Util.makeHexColor(r | 0, g | 0, b | 0);\n }\n\n const title = document.createElement(\"h1\");\n title.dir = this.titleObj.dir;\n title.textContent = this.titleObj.str;\n popup.append(title);\n\n const dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate);\n\n if (dateObject) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.className = \"popupDate\";\n modificationDate.textContent = \"{{date}}, {{time}}\";\n modificationDate.dataset.l10nId = \"annotation_date_string\";\n modificationDate.dataset.l10nArgs = JSON.stringify({\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString()\n });\n popup.append(modificationDate);\n }\n\n if (this.richText?.str && (!this.contentsObj?.str || this.contentsObj.str === this.richText.str)) {\n _xfa_layer.XfaLayer.render({\n xfaHtml: this.richText.html,\n intent: \"richText\",\n div: popup\n });\n\n popup.lastChild.className = \"richText popupContent\";\n } else {\n const contents = this._formatContents(this.contentsObj);\n\n popup.append(contents);\n }\n\n if (!Array.isArray(this.trigger)) {\n this.trigger = [this.trigger];\n }\n\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this._toggle.bind(this));\n element.addEventListener(\"mouseover\", this._show.bind(this, false));\n element.addEventListener(\"mouseout\", this._hide.bind(this, false));\n }\n\n popup.addEventListener(\"click\", this._hide.bind(this, true));\n wrapper.append(popup);\n return wrapper;\n }\n\n _formatContents({\n str,\n dir\n }) {\n const p = document.createElement(\"p\");\n p.className = \"popupContent\";\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\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\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n\n return p;\n }\n\n _toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n }\n\n _show(pin = false) {\n if (pin) {\n this.pinned = true;\n }\n\n if (this.hideElement.hidden) {\n this.hideElement.hidden = false;\n this.container.style.zIndex = parseInt(this.container.style.zIndex) + 1000;\n }\n }\n\n _hide(unpin = true) {\n if (unpin) {\n this.pinned = false;\n }\n\n if (!this.hideElement.hidden && !this.pinned) {\n this.hideElement.hidden = true;\n this.container.style.zIndex = parseInt(this.container.style.zIndex) - 1000;\n }\n }\n\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n }\n\n render() {\n this.container.className = \"freeTextAnnotation\";\n\n if (this.textContent) {\n const content = document.createElement(\"div\");\n content.className = \"annotationTextContent\";\n content.setAttribute(\"role\", \"comment\");\n\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n\n this.container.append(content);\n }\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n }\n\n render() {\n this.container.className = \"lineAnnotation\";\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n 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\n this._createPopup(line, data);\n\n return this.container;\n }\n\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n }\n\n render() {\n this.container.className = \"squareAnnotation\";\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n 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\n this._createPopup(square, data);\n\n return this.container;\n }\n\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n }\n\n render() {\n this.container.className = \"circleAnnotation\";\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n 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\n this._createPopup(circle, data);\n\n return this.container;\n }\n\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n\n this._createPopup(polyline, data);\n\n return this.container;\n }\n\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n }\n\n render() {\n this.container.className = \"caretAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n\n for (const inkList of data.inkLists) {\n let points = [];\n\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n this._createPopup(polyline, data);\n\n svg.append(polyline);\n }\n\n this.container.append(svg);\n return this.container;\n }\n\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"highlightAnnotation\");\n }\n\n this.container.className = \"highlightAnnotation\";\n return this.container;\n }\n\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"underlineAnnotation\");\n }\n\n this.container.className = \"underlineAnnotation\";\n return this.container;\n }\n\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"squigglyAnnotation\");\n }\n\n this.container.className = \"squigglyAnnotation\";\n return this.container;\n }\n\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"strikeoutAnnotation\");\n }\n\n this.container.className = \"strikeoutAnnotation\";\n return this.container;\n }\n\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n }\n\n render() {\n this.container.className = \"stampAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n filename,\n content\n } = this.data.file;\n this.filename = (0, _display_utils.getFilenameFromUrl)(filename);\n this.content = content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n filename,\n content\n });\n }\n\n render() {\n this.container.className = \"fileAttachmentAnnotation\";\n const trigger = document.createElement(\"div\");\n trigger.className = \"popupTriggerArea\";\n trigger.addEventListener(\"dblclick\", this._download.bind(this));\n\n if (!this.data.hasPopup && (this.data.titleObj?.str || this.data.contentsObj?.str || this.data.richText)) {\n this._createPopup(trigger, this.data);\n }\n\n this.container.append(trigger);\n return this.container;\n }\n\n _download() {\n this.downloadManager?.openOrDownloadData(this.container, this.content, this.filename);\n }\n\n}\n\nclass AnnotationLayer {\n static #appendElement(element, id, div, accessibilityManager) {\n const contentElement = element.firstChild || element;\n contentElement.id = `${_display_utils.AnnotationPrefix}${id}`;\n div.append(element);\n accessibilityManager?.moveElementInDOM(div, element, contentElement, false);\n }\n\n static render(parameters) {\n const {\n annotations,\n div,\n viewport,\n accessibilityManager\n } = parameters;\n this.#setDimensions(div, viewport);\n let zIndex = 0;\n\n for (const data of annotations) {\n if (data.annotationType !== _util.AnnotationType.POPUP) {\n const {\n width,\n height\n } = getRectDims(data.rect);\n\n if (width <= 0 || height <= 0) {\n continue;\n }\n }\n\n const element = AnnotationElementFactory.create({\n data,\n layer: div,\n page: parameters.page,\n viewport,\n linkService: parameters.linkService,\n downloadManager: parameters.downloadManager,\n imageResourcesPath: parameters.imageResourcesPath || \"\",\n renderForms: parameters.renderForms !== false,\n svgFactory: new _display_utils.DOMSVGFactory(),\n annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(),\n enableScripting: parameters.enableScripting,\n hasJSActions: parameters.hasJSActions,\n fieldObjects: parameters.fieldObjects,\n mouseState: parameters.mouseState || {\n isDown: false\n }\n });\n\n if (element.isRenderable) {\n const rendered = element.render();\n\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n\n if (Array.isArray(rendered)) {\n for (const renderedElement of rendered) {\n renderedElement.style.zIndex = zIndex++;\n AnnotationLayer.#appendElement(renderedElement, data.id, div, accessibilityManager);\n }\n } else {\n rendered.style.zIndex = zIndex++;\n\n if (element instanceof PopupAnnotationElement) {\n div.prepend(rendered);\n } else {\n AnnotationLayer.#appendElement(rendered, data.id, div, accessibilityManager);\n }\n }\n }\n }\n\n this.#setAnnotationCanvasMap(div, parameters.annotationCanvasMap);\n }\n\n static update(parameters) {\n const {\n annotationCanvasMap,\n div,\n viewport\n } = parameters;\n this.#setDimensions(div, viewport);\n this.#setAnnotationCanvasMap(div, annotationCanvasMap);\n div.hidden = false;\n }\n\n static #setDimensions(div, {\n width,\n height,\n rotation\n }) {\n const {\n style\n } = div;\n const flipOrientation = rotation % 180 !== 0,\n widthStr = Math.floor(width) + \"px\",\n heightStr = Math.floor(height) + \"px\";\n style.width = flipOrientation ? heightStr : widthStr;\n style.height = flipOrientation ? widthStr : heightStr;\n div.setAttribute(\"data-main-rotation\", rotation);\n }\n\n static #setAnnotationCanvasMap(div, annotationCanvasMap) {\n if (!annotationCanvasMap) {\n return;\n }\n\n for (const [id, canvas] of annotationCanvasMap) {\n const element = div.querySelector(`[data-annotation-id=\"${id}\"]`);\n\n if (!element) {\n continue;\n }\n\n const {\n firstChild\n } = element;\n\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else {\n firstChild.before(canvas);\n }\n }\n\n annotationCanvasMap.clear();\n }\n\n}\n\nexports.AnnotationLayer = AnnotationLayer;\n\n/***/ }),\n/* 28 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.ColorConverters = void 0;\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\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\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n\n static RGB_HTML([r, g, b]) {\n const R = makeColorComp(r);\n const G = makeColorComp(g);\n const B = makeColorComp(b);\n return `#${R}${G}${B}`;\n }\n\n static T_HTML() {\n return \"#00000000\";\n }\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\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\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\nexports.ColorConverters = ColorConverters;\n\n/***/ }),\n/* 29 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.XfaLayer = void 0;\n\nvar _xfa_text = __w_pdfjs_require__(20);\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n\n if (intent === \"print\") {\n break;\n }\n\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n\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\n if (intent === \"print\") {\n break;\n }\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\n if (intent === \"print\") {\n break;\n }\n\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n\n break;\n\n case \"select\":\n if (storedData.value !== null) {\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n }\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\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\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n\n break;\n\n case \"dataId\":\n break;\n\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n\n case \"style\":\n Object.assign(html.style, value);\n break;\n\n case \"textContent\":\n html.textContent = value;\n break;\n\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n\n }\n }\n\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\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\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n\n const stack = [[root, -1, rootHtml]];\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n\n if (intent !== \"richText\") {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n\n const textDivs = [];\n\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n\n const child = parent.children[++stack.at(-1)[1]];\n\n if (child === null) {\n continue;\n }\n\n const {\n name\n } = child;\n\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n\n let childHtml;\n\n if (child?.attributes?.xmlns) {\n childHtml = document.createElementNS(child.attributes.xmlns, name);\n } else {\n childHtml = document.createElement(name);\n }\n\n html.append(childHtml);\n\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n\n if (child.children && child.children.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n\n if (_xfa_text.XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n\n childHtml.append(node);\n }\n }\n\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n\n return {\n textDivs\n };\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\nexports.XfaLayer = XfaLayer;\n\n/***/ }),\n/* 30 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.TextLayerRenderTask = void 0;\nexports.renderTextLayer = renderTextLayer;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _display_utils = __w_pdfjs_require__(8);\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\nconst AllWhitespaceRegexp = /^\\s+$/g;\n\nfunction getAscent(fontFamily, ctx) {\n const cachedAscent = ascentCache.get(fontFamily);\n\n if (cachedAscent) {\n return cachedAscent;\n }\n\n ctx.save();\n ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n const metrics = ctx.measureText(\"\");\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n\n if (ascent) {\n ctx.restore();\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n descent = 0;\n\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n ctx.restore();\n\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n return DEFAULT_FONT_ASCENT;\n}\n\nfunction appendText(task, geom, styles, ctx) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = task._enhanceTextSelection ? {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n originalTransform: null,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n scale: 1,\n fontSize: 0\n } : {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n\n task._textDivs.push(textDiv);\n\n const tx = _util.Util.transform(task._viewport.transform, geom.transform);\n\n let angle = Math.atan2(tx[1], tx[0]);\n const style = styles[geom.fontName];\n\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * getAscent(style.fontFamily, ctx);\n let left, top;\n\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\n textDiv.style.left = `${left}px`;\n textDiv.style.top = `${top}px`;\n textDiv.style.fontSize = `${fontHeight}px`;\n textDiv.style.fontFamily = style.fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n\n let shouldScaleText = false;\n\n if (geom.str.length > 1 || task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str)) {\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\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n\n if (shouldScaleText) {\n if (style.vertical) {\n textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n } else {\n textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n }\n }\n\n task._textDivProperties.set(textDiv, textDivProperties);\n\n if (task._textContentStream) {\n task._layoutText(textDiv);\n }\n\n if (task._enhanceTextSelection && textDivProperties.hasText) {\n let angleCos = 1,\n angleSin = 0;\n\n if (angle !== 0) {\n angleCos = Math.cos(angle);\n angleSin = Math.sin(angle);\n }\n\n const divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;\n const divHeight = fontHeight;\n let m, b;\n\n if (angle !== 0) {\n m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n } else {\n b = [left, top, left + divWidth, top + divHeight];\n }\n\n task._bounds.push({\n left: b[0],\n top: b[1],\n right: b[2],\n bottom: b[3],\n div: textDiv,\n size: [divWidth, divHeight],\n m\n });\n }\n}\n\nfunction render(task) {\n if (task._canceled) {\n return;\n }\n\n const textDivs = task._textDivs;\n const capability = task._capability;\n const textDivsLength = textDivs.length;\n\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n task._renderingDone = true;\n capability.resolve();\n return;\n }\n\n if (!task._textContentStream) {\n for (let i = 0; i < textDivsLength; i++) {\n task._layoutText(textDivs[i]);\n }\n }\n\n task._renderingDone = true;\n capability.resolve();\n}\n\nfunction findPositiveMin(ts, offset, count) {\n let result = 0;\n\n for (let i = 0; i < count; i++) {\n const t = ts[offset++];\n\n if (t > 0) {\n result = result ? Math.min(t, result) : t;\n }\n }\n\n return result;\n}\n\nfunction expand(task) {\n const bounds = task._bounds;\n const viewport = task._viewport;\n const expanded = expandBounds(viewport.width, viewport.height, bounds);\n\n for (let i = 0; i < expanded.length; i++) {\n const div = bounds[i].div;\n\n const divProperties = task._textDivProperties.get(div);\n\n if (divProperties.angle === 0) {\n divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n divProperties.paddingTop = bounds[i].top - expanded[i].top;\n divProperties.paddingRight = expanded[i].right - bounds[i].right;\n divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n\n task._textDivProperties.set(div, divProperties);\n\n continue;\n }\n\n const e = expanded[i],\n b = bounds[i];\n const m = b.m,\n c = m[0],\n s = m[1];\n const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n const ts = new Float64Array(64);\n\n for (let j = 0, jj = points.length; j < jj; j++) {\n const t = _util.Util.applyTransform(points[j], m);\n\n ts[j + 0] = c && (e.left - t[0]) / c;\n ts[j + 4] = s && (e.top - t[1]) / s;\n ts[j + 8] = c && (e.right - t[0]) / c;\n ts[j + 12] = s && (e.bottom - t[1]) / s;\n ts[j + 16] = s && (e.left - t[0]) / -s;\n ts[j + 20] = c && (e.top - t[1]) / c;\n ts[j + 24] = s && (e.right - t[0]) / -s;\n ts[j + 28] = c && (e.bottom - t[1]) / c;\n ts[j + 32] = c && (e.left - t[0]) / -c;\n ts[j + 36] = s && (e.top - t[1]) / -s;\n ts[j + 40] = c && (e.right - t[0]) / -c;\n ts[j + 44] = s && (e.bottom - t[1]) / -s;\n ts[j + 48] = s && (e.left - t[0]) / s;\n ts[j + 52] = c && (e.top - t[1]) / -c;\n ts[j + 56] = s && (e.right - t[0]) / s;\n ts[j + 60] = c && (e.bottom - t[1]) / -c;\n }\n\n const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n\n task._textDivProperties.set(div, divProperties);\n }\n}\n\nfunction expandBounds(width, height, boxes) {\n const bounds = boxes.map(function (box, i) {\n return {\n x1: box.left,\n y1: box.top,\n x2: box.right,\n y2: box.bottom,\n index: i,\n x1New: undefined,\n x2New: undefined\n };\n });\n expandBoundsLTR(width, bounds);\n const expanded = new Array(boxes.length);\n\n for (const b of bounds) {\n const i = b.index;\n expanded[i] = {\n left: b.x1New,\n top: 0,\n right: b.x2New,\n bottom: 0\n };\n }\n\n boxes.map(function (box, i) {\n const e = expanded[i],\n b = bounds[i];\n b.x1 = box.top;\n b.y1 = width - e.right;\n b.x2 = box.bottom;\n b.y2 = width - e.left;\n b.index = i;\n b.x1New = undefined;\n b.x2New = undefined;\n });\n expandBoundsLTR(height, bounds);\n\n for (const b of bounds) {\n const i = b.index;\n expanded[i].top = b.x1New;\n expanded[i].bottom = b.x2New;\n }\n\n return expanded;\n}\n\nfunction expandBoundsLTR(width, bounds) {\n bounds.sort(function (a, b) {\n return a.x1 - b.x1 || a.index - b.index;\n });\n const fakeBoundary = {\n x1: -Infinity,\n y1: -Infinity,\n x2: 0,\n y2: Infinity,\n index: -1,\n x1New: 0,\n x2New: 0\n };\n const horizon = [{\n start: -Infinity,\n end: Infinity,\n boundary: fakeBoundary\n }];\n\n for (const boundary of bounds) {\n let i = 0;\n\n while (i < horizon.length && horizon[i].end <= boundary.y1) {\n i++;\n }\n\n let j = horizon.length - 1;\n\n while (j >= 0 && horizon[j].start >= boundary.y2) {\n j--;\n }\n\n let horizonPart, affectedBoundary;\n let q,\n k,\n maxXNew = -Infinity;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n let xNew;\n\n if (affectedBoundary.x2 > boundary.x1) {\n xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;\n } else if (affectedBoundary.x2New === undefined) {\n xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n } else {\n xNew = affectedBoundary.x2New;\n }\n\n if (xNew > maxXNew) {\n maxXNew = xNew;\n }\n }\n\n boundary.x1New = maxXNew;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New === undefined) {\n if (affectedBoundary.x2 > boundary.x1) {\n if (affectedBoundary.index > boundary.index) {\n affectedBoundary.x2New = affectedBoundary.x2;\n }\n } else {\n affectedBoundary.x2New = maxXNew;\n }\n } else if (affectedBoundary.x2New > maxXNew) {\n affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n }\n }\n\n const changedHorizon = [];\n let lastBoundary = null;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n const useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;\n\n if (lastBoundary === useBoundary) {\n changedHorizon.at(-1).end = horizonPart.end;\n } else {\n changedHorizon.push({\n start: horizonPart.start,\n end: horizonPart.end,\n boundary: useBoundary\n });\n lastBoundary = useBoundary;\n }\n }\n\n if (horizon[i].start < boundary.y1) {\n changedHorizon[0].start = boundary.y1;\n changedHorizon.unshift({\n start: horizon[i].start,\n end: boundary.y1,\n boundary: horizon[i].boundary\n });\n }\n\n if (boundary.y2 < horizon[j].end) {\n changedHorizon.at(-1).end = boundary.y2;\n changedHorizon.push({\n start: boundary.y2,\n end: horizon[j].end,\n boundary: horizon[j].boundary\n });\n }\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New !== undefined) {\n continue;\n }\n\n let used = false;\n\n for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {\n used = horizon[k].boundary === affectedBoundary;\n }\n\n for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) {\n used = horizon[k].boundary === affectedBoundary;\n }\n\n for (k = 0; !used && k < changedHorizon.length; k++) {\n used = changedHorizon[k].boundary === affectedBoundary;\n }\n\n if (!used) {\n affectedBoundary.x2New = maxXNew;\n }\n }\n\n Array.prototype.splice.apply(horizon, [i, j - i + 1, ...changedHorizon]);\n }\n\n for (const horizonPart of horizon) {\n const affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New === undefined) {\n affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n }\n }\n}\n\nclass TextLayerRenderTask {\n constructor({\n textContent,\n textContentStream,\n container,\n viewport,\n textDivs,\n textContentItemsStr,\n enhanceTextSelection\n }) {\n if (enhanceTextSelection) {\n (0, _display_utils.deprecated)(\"The `enhanceTextSelection` functionality will be removed in the future.\");\n }\n\n this._textContent = textContent;\n this._textContentStream = textContentStream;\n this._container = container;\n this._document = container.ownerDocument;\n this._viewport = viewport;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._enhanceTextSelection = !!enhanceTextSelection;\n this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n this._reader = null;\n this._layoutTextLastFontSize = null;\n this._layoutTextLastFontFamily = null;\n this._layoutTextCtx = null;\n this._textDivProperties = new WeakMap();\n this._renderingDone = false;\n this._canceled = false;\n this._capability = (0, _util.createPromiseCapability)();\n this._renderTimer = null;\n this._bounds = [];\n this._devicePixelRatio = globalThis.devicePixelRatio || 1;\n\n this._capability.promise.finally(() => {\n if (!this._enhanceTextSelection) {\n this._textDivProperties = null;\n }\n\n if (this._layoutTextCtx) {\n this._layoutTextCtx.canvas.width = 0;\n this._layoutTextCtx.canvas.height = 0;\n this._layoutTextCtx = null;\n }\n }).catch(() => {});\n }\n\n get promise() {\n return this._capability.promise;\n }\n\n cancel() {\n this._canceled = true;\n\n if (this._reader) {\n this._reader.cancel(new _util.AbortException(\"TextLayer task cancelled.\")).catch(() => {});\n\n this._reader = null;\n }\n\n if (this._renderTimer !== null) {\n clearTimeout(this._renderTimer);\n this._renderTimer = null;\n }\n\n this._capability.reject(new Error(\"TextLayer task cancelled.\"));\n }\n\n _processItems(items, styleCache) {\n for (let i = 0, len = items.length; i < len; i++) {\n if (items[i].str === undefined) {\n if (items[i].type === \"beginMarkedContentProps\" || items[i].type === \"beginMarkedContent\") {\n const parent = this._container;\n this._container = document.createElement(\"span\");\n\n this._container.classList.add(\"markedContent\");\n\n if (items[i].id !== null) {\n this._container.setAttribute(\"id\", `${items[i].id}`);\n }\n\n parent.append(this._container);\n } else if (items[i].type === \"endMarkedContent\") {\n this._container = this._container.parentNode;\n }\n\n continue;\n }\n\n this._textContentItemsStr.push(items[i].str);\n\n appendText(this, items[i], styleCache, this._layoutTextCtx);\n }\n }\n\n _layoutText(textDiv) {\n const textDivProperties = this._textDivProperties.get(textDiv);\n\n let transform = \"\";\n\n if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) {\n const {\n fontFamily\n } = textDiv.style;\n const {\n fontSize\n } = textDivProperties;\n\n if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) {\n this._layoutTextCtx.font = `${fontSize * this._devicePixelRatio}px ${fontFamily}`;\n this._layoutTextLastFontSize = fontSize;\n this._layoutTextLastFontFamily = fontFamily;\n }\n\n const {\n width\n } = this._layoutTextCtx.measureText(textDiv.textContent);\n\n if (width > 0) {\n const scale = this._devicePixelRatio * textDivProperties.canvasWidth / width;\n\n if (this._enhanceTextSelection) {\n textDivProperties.scale = scale;\n }\n\n transform = `scaleX(${scale})`;\n }\n }\n\n if (textDivProperties.angle !== 0) {\n transform = `rotate(${textDivProperties.angle}deg) ${transform}`;\n }\n\n if (transform.length > 0) {\n if (this._enhanceTextSelection) {\n textDivProperties.originalTransform = transform;\n }\n\n textDiv.style.transform = transform;\n }\n\n if (textDivProperties.hasText) {\n this._container.append(textDiv);\n }\n\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n\n this._container.append(br);\n }\n }\n\n _render(timeout = 0) {\n const capability = (0, _util.createPromiseCapability)();\n let styleCache = Object.create(null);\n\n const canvas = this._document.createElement(\"canvas\");\n\n canvas.height = canvas.width = DEFAULT_FONT_SIZE;\n this._layoutTextCtx = canvas.getContext(\"2d\", {\n alpha: false\n });\n\n if (this._textContent) {\n const textItems = this._textContent.items;\n const textStyles = this._textContent.styles;\n\n this._processItems(textItems, textStyles);\n\n capability.resolve();\n } else if (this._textContentStream) {\n const pump = () => {\n this._reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n\n this._processItems(value.items, styleCache);\n\n pump();\n }, capability.reject);\n };\n\n this._reader = this._textContentStream.getReader();\n pump();\n } else {\n throw new Error('Neither \"textContent\" nor \"textContentStream\" parameters specified.');\n }\n\n capability.promise.then(() => {\n styleCache = null;\n\n if (!timeout) {\n render(this);\n } else {\n this._renderTimer = setTimeout(() => {\n render(this);\n this._renderTimer = null;\n }, timeout);\n }\n }, this._capability.reject);\n }\n\n expandTextDivs(expandDivs = false) {\n if (!this._enhanceTextSelection || !this._renderingDone) {\n return;\n }\n\n if (this._bounds !== null) {\n expand(this);\n this._bounds = null;\n }\n\n const transformBuf = [],\n paddingBuf = [];\n\n for (let i = 0, ii = this._textDivs.length; i < ii; i++) {\n const div = this._textDivs[i];\n\n const divProps = this._textDivProperties.get(div);\n\n if (!divProps.hasText) {\n continue;\n }\n\n if (expandDivs) {\n transformBuf.length = 0;\n paddingBuf.length = 0;\n\n if (divProps.originalTransform) {\n transformBuf.push(divProps.originalTransform);\n }\n\n if (divProps.paddingTop > 0) {\n paddingBuf.push(`${divProps.paddingTop}px`);\n transformBuf.push(`translateY(${-divProps.paddingTop}px)`);\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingRight > 0) {\n paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`);\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingBottom > 0) {\n paddingBuf.push(`${divProps.paddingBottom}px`);\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingLeft > 0) {\n paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`);\n transformBuf.push(`translateX(${-divProps.paddingLeft / divProps.scale}px)`);\n } else {\n paddingBuf.push(0);\n }\n\n div.style.padding = paddingBuf.join(\" \");\n\n if (transformBuf.length) {\n div.style.transform = transformBuf.join(\" \");\n }\n } else {\n div.style.padding = null;\n div.style.transform = divProps.originalTransform;\n }\n }\n }\n\n}\n\nexports.TextLayerRenderTask = TextLayerRenderTask;\n\nfunction renderTextLayer(renderParameters) {\n const task = new TextLayerRenderTask({\n textContent: renderParameters.textContent,\n textContentStream: renderParameters.textContentStream,\n container: renderParameters.container,\n viewport: renderParameters.viewport,\n textDivs: renderParameters.textDivs,\n textContentItemsStr: renderParameters.textContentItemsStr,\n enhanceTextSelection: renderParameters.enhanceTextSelection\n });\n\n task._render(renderParameters.timeout);\n\n return task;\n}\n\n/***/ }),\n/* 31 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.SVGGraphics = void 0;\n\nvar _display_utils = __w_pdfjs_require__(8);\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _is_node = __w_pdfjs_require__(3);\n\nlet SVGGraphics = class {\n constructor() {\n (0, _util.unreachable)(\"Not implemented: SVGGraphics\");\n }\n\n};\nexports.SVGGraphics = SVGGraphics;\n{\n const SVG_DEFAULTS = {\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fillColor: \"#000000\"\n };\n const XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n const XLINK_NS = \"http://www.w3.org/1999/xlink\";\n const LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n const LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n\n const createObjectURL = function (data, contentType = \"\", forceDataSchema = false) {\n if (URL.createObjectURL && typeof Blob !== \"undefined\" && !forceDataSchema) {\n return URL.createObjectURL(new Blob([data], {\n type: contentType\n }));\n }\n\n const digits = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n let buffer = `data:${contentType};base64,`;\n\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = (b1 & 3) << 4 | b2 >> 4;\n const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n\n return buffer;\n };\n\n const convertImgDataToPng = function () {\n const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n const CHUNK_WRAPPER_SIZE = 12;\n const crcTable = new Int32Array(256);\n\n for (let i = 0; i < 256; i++) {\n let c = i;\n\n for (let h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedb88320 ^ c >> 1 & 0x7fffffff;\n } else {\n c = c >> 1 & 0x7fffffff;\n }\n }\n\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n let crc = -1;\n\n for (let i = start; i < end; i++) {\n const a = (crc ^ data[i]) & 0xff;\n const b = crcTable[a];\n crc = crc >>> 8 ^ b;\n }\n\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n let p = offset;\n const len = body.length;\n data[p] = len >> 24 & 0xff;\n data[p + 1] = len >> 16 & 0xff;\n data[p + 2] = len >> 8 & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n data.set(body, p);\n p += body.length;\n const crc = crc32(data, offset + 4, p);\n data[p] = crc >> 24 & 0xff;\n data[p + 1] = crc >> 16 & 0xff;\n data[p + 2] = crc >> 8 & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n let a = 1;\n let b = 0;\n\n for (let i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n\n return b << 16 | a;\n }\n\n function deflateSync(literals) {\n if (!_is_node.isNodeJS) {\n return deflateSyncUncompressed(literals);\n }\n\n try {\n let input;\n\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n input = Buffer.from(literals);\n }\n\n const output = require(\"zlib\").deflateSync(input, {\n level: 9\n });\n\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n (0, _util.warn)(\"Not compressing PNG because zlib.deflateSync is unavailable: \" + e);\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n function deflateSyncUncompressed(literals) {\n let len = literals.length;\n const maxBlockLength = 0xffff;\n const deflateBlocks = Math.ceil(len / maxBlockLength);\n const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n let pi = 0;\n idat[pi++] = 0x78;\n idat[pi++] = 0x9c;\n let pos = 0;\n\n while (len > maxBlockLength) {\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = len >> 8 & 0xff;\n idat[pi++] = ~len & 0xffff & 0xff;\n idat[pi++] = (~len & 0xffff) >> 8 & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n const adler = adler32(literals, 0, literals.length);\n idat[pi++] = adler >> 24 & 0xff;\n idat[pi++] = adler >> 16 & 0xff;\n idat[pi++] = adler >> 8 & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema, isMask) {\n const width = imgData.width;\n const height = imgData.height;\n let bitDepth, colorType, lineSize;\n const bytes = imgData.data;\n\n switch (kind) {\n case _util.ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = width + 7 >> 3;\n break;\n\n case _util.ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n\n case _util.ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n\n default:\n throw new Error(\"invalid format\");\n }\n\n const literals = new Uint8Array((1 + lineSize) * height);\n let offsetLiterals = 0,\n offsetBytes = 0;\n\n for (let y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0;\n literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {\n offsetLiterals = 0;\n\n for (let y = 0; y < height; y++) {\n offsetLiterals++;\n\n for (let i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xff;\n }\n }\n }\n\n const ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]);\n const idat = deflateSync(literals);\n const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n const data = new Uint8Array(pngLength);\n let offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk(\"IHDR\", ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk(\"IDATA\", idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n return createObjectURL(data, \"image/png\", forceDataSchema);\n }\n\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n }();\n\n class SVGExtraState {\n constructor() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n this.textMatrix = _util.IDENTITY_MATRIX;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = \"#000000\";\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n this.dashArray = [];\n this.dashPhase = 0;\n this.dependencies = [];\n this.activeClipUrl = null;\n this.clipGroup = null;\n this.maskId = \"\";\n }\n\n clone() {\n return Object.create(this);\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n\n }\n\n function opListToTree(opList) {\n let opTree = [];\n const tmp = [];\n\n for (const opListElement of opList) {\n if (opListElement.fn === \"save\") {\n opTree.push({\n fnId: 92,\n fn: \"group\",\n items: []\n });\n tmp.push(opTree);\n opTree = opTree.at(-1).items;\n continue;\n }\n\n if (opListElement.fn === \"restore\") {\n opTree = tmp.pop();\n } else {\n opTree.push(opListElement);\n }\n }\n\n return opTree;\n }\n\n function pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n const s = value.toFixed(10);\n let i = s.length - 1;\n\n if (s[i] !== \"0\") {\n return s;\n }\n\n do {\n i--;\n } while (s[i] === \"0\");\n\n return s.substring(0, s[i] === \".\" ? i : i + 1);\n }\n\n function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return \"\";\n }\n\n return `scale(${pf(m[0])} ${pf(m[3])})`;\n }\n\n if (m[0] === m[3] && m[1] === -m[2]) {\n const a = Math.acos(m[0]) * 180 / Math.PI;\n return `rotate(${pf(a)})`;\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return `translate(${pf(m[4])} ${pf(m[5])})`;\n }\n }\n\n return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`;\n }\n\n let clipCount = 0;\n let maskCount = 0;\n let shadingCount = 0;\n exports.SVGGraphics = SVGGraphics = class {\n constructor(commonObjs, objs, forceDataSchema = false) {\n (0, _display_utils.deprecated)(\"The SVG back-end is no longer maintained and *may* be removed in the future.\");\n this.svgFactory = new _display_utils.DOMSVGFactory();\n this.current = new SVGExtraState();\n this.transformMatrix = _util.IDENTITY_MATRIX;\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n this._operatorIdMapping = [];\n\n for (const op in _util.OPS) {\n this._operatorIdMapping[_util.OPS[op]] = op;\n }\n }\n\n save() {\n this.transformStack.push(this.transformMatrix);\n const old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n\n group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n }\n\n loadDependencies(operatorList) {\n const fnArray = operatorList.fnArray;\n const argsArray = operatorList.argsArray;\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n if (fnArray[i] !== _util.OPS.dependency) {\n continue;\n }\n\n for (const obj of argsArray[i]) {\n const objsPool = obj.startsWith(\"g_\") ? this.commonObjs : this.objs;\n const promise = new Promise(resolve => {\n objsPool.get(obj, resolve);\n });\n this.current.dependencies.push(promise);\n }\n }\n\n return Promise.all(this.current.dependencies);\n }\n\n transform(a, b, c, d, e, f) {\n const transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);\n this.tgrp = null;\n }\n\n getSVG(operatorList, viewport) {\n this.viewport = viewport;\n\n const svgElement = this._initialize(viewport);\n\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = _util.IDENTITY_MATRIX;\n this.executeOpTree(this.convertOpList(operatorList));\n return svgElement;\n });\n }\n\n convertOpList(operatorList) {\n const operatorIdMapping = this._operatorIdMapping;\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n const opList = [];\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n const fnId = fnArray[i];\n opList.push({\n fnId,\n fn: operatorIdMapping[fnId],\n args: argsArray[i]\n });\n }\n\n return opListToTree(opList);\n }\n\n executeOpTree(opTree) {\n for (const opTreeElement of opTree) {\n const fn = opTreeElement.fn;\n const fnId = opTreeElement.fnId;\n const args = opTreeElement.args;\n\n switch (fnId | 0) {\n case _util.OPS.beginText:\n this.beginText();\n break;\n\n case _util.OPS.dependency:\n break;\n\n case _util.OPS.setLeading:\n this.setLeading(args);\n break;\n\n case _util.OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n\n case _util.OPS.setFont:\n this.setFont(args);\n break;\n\n case _util.OPS.showText:\n this.showText(args[0]);\n break;\n\n case _util.OPS.showSpacedText:\n this.showText(args[0]);\n break;\n\n case _util.OPS.endText:\n this.endText();\n break;\n\n case _util.OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n\n case _util.OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n\n case _util.OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n\n case _util.OPS.setHScale:\n this.setHScale(args[0]);\n break;\n\n case _util.OPS.setTextMatrix:\n this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n\n case _util.OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n\n case _util.OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n\n case _util.OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n\n case _util.OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n\n case _util.OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n\n case _util.OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n\n case _util.OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n\n case _util.OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n\n case _util.OPS.setStrokeColorN:\n this.setStrokeColorN(args);\n break;\n\n case _util.OPS.setFillColorN:\n this.setFillColorN(args);\n break;\n\n case _util.OPS.shadingFill:\n this.shadingFill(args[0]);\n break;\n\n case _util.OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n\n case _util.OPS.setRenderingIntent:\n this.setRenderingIntent(args[0]);\n break;\n\n case _util.OPS.setFlatness:\n this.setFlatness(args[0]);\n break;\n\n case _util.OPS.setGState:\n this.setGState(args[0]);\n break;\n\n case _util.OPS.fill:\n this.fill();\n break;\n\n case _util.OPS.eoFill:\n this.eoFill();\n break;\n\n case _util.OPS.stroke:\n this.stroke();\n break;\n\n case _util.OPS.fillStroke:\n this.fillStroke();\n break;\n\n case _util.OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n\n case _util.OPS.clip:\n this.clip(\"nonzero\");\n break;\n\n case _util.OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n\n case _util.OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n\n case _util.OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n\n case _util.OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n\n case _util.OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n\n case _util.OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n\n case _util.OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n\n case _util.OPS.closePath:\n this.closePath();\n break;\n\n case _util.OPS.closeStroke:\n this.closeStroke();\n break;\n\n case _util.OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n\n case _util.OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n\n case _util.OPS.nextLine:\n this.nextLine();\n break;\n\n case _util.OPS.transform:\n this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n\n case _util.OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n\n case _util.OPS.endPath:\n this.endPath();\n break;\n\n case 92:\n this.group(opTreeElement.items);\n break;\n\n default:\n (0, _util.warn)(`Unimplemented operator ${fn}`);\n break;\n }\n }\n }\n\n setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n }\n\n setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const current = this.current;\n current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n current.textMatrixScale = Math.hypot(a, b);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtElement.append(current.tspan);\n }\n\n beginText() {\n const current = this.current;\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.textMatrix = _util.IDENTITY_MATRIX;\n current.lineMatrix = _util.IDENTITY_MATRIX;\n current.textMatrixScale = 1;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n current.xcoords = [];\n current.ycoords = [];\n }\n\n moveText(x, y) {\n const current = this.current;\n current.x = current.lineX += x;\n current.y = current.lineY += y;\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n\n if (fontSize === 0) {\n return;\n }\n\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 vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n let x = 0;\n\n for (const glyph of glyphs) {\n if (glyph === null) {\n x += fontDirection * wordSpacing;\n continue;\n } else if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n let scaledX, scaledY;\n let width = glyph.width;\n\n if (vertical) {\n let vx;\n const vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * 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\n if (glyph.isInFont || font.missingFile) {\n current.xcoords.push(current.x + scaledX);\n\n if (vertical) {\n current.ycoords.push(-current.y + scaledY);\n }\n\n current.tspan.textContent += character;\n } else {}\n\n let charWidth;\n\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n }\n\n current.tspan.setAttributeNS(null, \"x\", current.xcoords.map(pf).join(\" \"));\n\n if (vertical) {\n current.tspan.setAttributeNS(null, \"y\", current.ycoords.map(pf).join(\" \"));\n } else {\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n }\n\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n }\n\n const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n }\n\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n }\n } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {\n current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n } else {\n current.tspan.setAttributeNS(null, \"fill\", \"none\");\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n const lineWidthScale = 1 / (current.textMatrixScale || 1);\n\n this._setStrokeAttributes(current.tspan, lineWidthScale);\n }\n\n let textMatrix = current.textMatrix;\n\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n\n current.txtElement.setAttributeNS(null, \"transform\", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`);\n current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n current.txtElement.append(current.tspan);\n current.txtgrp.append(current.txtElement);\n\n this._ensureTransformGroup().append(current.txtElement);\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n addFontStyle(fontObj) {\n if (!fontObj.data) {\n throw new Error(\"addFontStyle: No font data available, \" + 'ensure that the \"fontExtraProperties\" API parameter is set.');\n }\n\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.append(this.cssStyle);\n }\n\n const url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema);\n this.cssStyle.textContent += `@font-face { font-family: \"${fontObj.loadedName}\";` + ` src: url(${url}); }\\n`;\n }\n\n setFont(details) {\n const current = this.current;\n const fontObj = this.commonObjs.get(details[0]);\n let size = details[1];\n current.font = fontObj;\n\n if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n\n current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n let bold = \"normal\";\n\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.xcoords = [];\n current.ycoords = [];\n }\n\n endText() {\n const current = this.current;\n\n if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement?.hasChildNodes()) {\n current.element = current.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n setLineWidth(width) {\n if (width > 0) {\n this.current.lineWidth = width;\n }\n }\n\n setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.current.miterLimit = limit;\n }\n\n setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n }\n\n setStrokeRGBColor(r, g, b) {\n this.current.strokeColor = _util.Util.makeHexColor(r, g, b);\n }\n\n setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n }\n\n setFillRGBColor(r, g, b) {\n this.current.fillColor = _util.Util.makeHexColor(r, g, b);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n this.current.ycoords = [];\n }\n\n setStrokeColorN(args) {\n this.current.strokeColor = this._makeColorN_Pattern(args);\n }\n\n setFillColorN(args) {\n this.current.fillColor = this._makeColorN_Pattern(args);\n }\n\n shadingFill(args) {\n const width = this.viewport.width;\n const height = this.viewport.height;\n\n const inv = _util.Util.inverseTransform(this.transformMatrix);\n\n const bl = _util.Util.applyTransform([0, 0], inv);\n\n const br = _util.Util.applyTransform([0, height], inv);\n\n const ul = _util.Util.applyTransform([width, 0], inv);\n\n const ur = _util.Util.applyTransform([width, height], inv);\n\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", x0);\n rect.setAttributeNS(null, \"y\", y0);\n rect.setAttributeNS(null, \"width\", x1 - x0);\n rect.setAttributeNS(null, \"height\", y1 - y0);\n rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n\n if (this.current.fillAlpha < 1) {\n rect.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n }\n\n this._ensureTransformGroup().append(rect);\n }\n\n _makeColorN_Pattern(args) {\n if (args[0] === \"TilingPattern\") {\n return this._makeTilingPattern(args);\n }\n\n return this._makeShadingPattern(args);\n }\n\n _makeTilingPattern(args) {\n const color = args[1];\n const operatorList = args[2];\n const matrix = args[3] || _util.IDENTITY_MATRIX;\n const [x0, y0, x1, y1] = args[4];\n const xstep = args[5];\n const ystep = args[6];\n const paintType = args[7];\n const tilingId = `shading${shadingCount++}`;\n\n const [tx0, ty0, tx1, ty1] = _util.Util.normalizeRect([..._util.Util.applyTransform([x0, y0], matrix), ..._util.Util.applyTransform([x1, y1], matrix)]);\n\n const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix);\n\n const txstep = xstep * xscale;\n const tystep = ystep * yscale;\n const tiling = this.svgFactory.createElement(\"svg:pattern\");\n tiling.setAttributeNS(null, \"id\", tilingId);\n tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n tiling.setAttributeNS(null, \"width\", txstep);\n tiling.setAttributeNS(null, \"height\", tystep);\n tiling.setAttributeNS(null, \"x\", `${tx0}`);\n tiling.setAttributeNS(null, \"y\", `${ty0}`);\n const svg = this.svg;\n const transformMatrix = this.transformMatrix;\n const fillColor = this.current.fillColor;\n const strokeColor = this.current.strokeColor;\n const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n this.svg = bbox;\n this.transformMatrix = matrix;\n\n if (paintType === 2) {\n const cssColor = _util.Util.makeHexColor(...color);\n\n this.current.fillColor = cssColor;\n this.current.strokeColor = cssColor;\n }\n\n this.executeOpTree(this.convertOpList(operatorList));\n this.svg = svg;\n this.transformMatrix = transformMatrix;\n this.current.fillColor = fillColor;\n this.current.strokeColor = strokeColor;\n tiling.append(bbox.childNodes[0]);\n this.defs.append(tiling);\n return `url(#${tilingId})`;\n }\n\n _makeShadingPattern(args) {\n if (typeof args === \"string\") {\n args = this.objs.get(args);\n }\n\n switch (args[0]) {\n case \"RadialAxial\":\n const shadingId = `shading${shadingCount++}`;\n const colorStops = args[3];\n let gradient;\n\n switch (args[1]) {\n case \"axial\":\n const point0 = args[4];\n const point1 = args[5];\n gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"x1\", point0[0]);\n gradient.setAttributeNS(null, \"y1\", point0[1]);\n gradient.setAttributeNS(null, \"x2\", point1[0]);\n gradient.setAttributeNS(null, \"y2\", point1[1]);\n break;\n\n case \"radial\":\n const focalPoint = args[4];\n const circlePoint = args[5];\n const focalRadius = args[6];\n const circleRadius = args[7];\n gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n gradient.setAttributeNS(null, \"r\", circleRadius);\n gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n gradient.setAttributeNS(null, \"fr\", focalRadius);\n break;\n\n default:\n throw new Error(`Unknown RadialAxial type: ${args[1]}`);\n }\n\n for (const colorStop of colorStops) {\n const stop = this.svgFactory.createElement(\"svg:stop\");\n stop.setAttributeNS(null, \"offset\", colorStop[0]);\n stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n gradient.append(stop);\n }\n\n this.defs.append(gradient);\n return `url(#${shadingId})`;\n\n case \"Mesh\":\n (0, _util.warn)(\"Unimplemented pattern Mesh\");\n return null;\n\n case \"Dummy\":\n return \"hotpink\";\n\n default:\n throw new Error(`Unknown IR type: ${args[0]}`);\n }\n }\n\n setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n }\n\n constructPath(ops, args) {\n const current = this.current;\n let x = current.x,\n y = current.y;\n let d = [];\n let j = 0;\n\n for (const op of ops) {\n switch (op | 0) {\n case _util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n d.push(\"M\", pf(x), pf(y), \"L\", pf(xw), pf(y), \"L\", pf(xw), pf(yh), \"L\", pf(x), pf(yh), \"Z\");\n break;\n\n case _util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push(\"M\", pf(x), pf(y));\n break;\n\n case _util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push(\"L\", pf(x), pf(y));\n break;\n\n case _util.OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));\n j += 6;\n break;\n\n case _util.OPS.curveTo2:\n d.push(\"C\", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n\n case _util.OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));\n j += 4;\n break;\n\n case _util.OPS.closePath:\n d.push(\"Z\");\n break;\n }\n }\n\n d = d.join(\" \");\n\n if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) {\n d = current.path.getAttributeNS(null, \"d\") + d;\n } else {\n current.path = this.svgFactory.createElement(\"svg:path\");\n\n this._ensureTransformGroup().append(current.path);\n }\n\n current.path.setAttributeNS(null, \"d\", d);\n current.path.setAttributeNS(null, \"fill\", \"none\");\n current.element = current.path;\n current.setCurrentPoint(x, y);\n }\n\n endPath() {\n const current = this.current;\n current.path = null;\n\n if (!this.pendingClip) {\n return;\n }\n\n if (!current.element) {\n this.pendingClip = null;\n return;\n }\n\n const clipId = `clippath${clipCount++}`;\n const clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n clipPath.setAttributeNS(null, \"id\", clipId);\n clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n const clipElement = current.element.cloneNode(true);\n\n if (this.pendingClip === \"evenodd\") {\n clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n } else {\n clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n }\n\n this.pendingClip = null;\n clipPath.append(clipElement);\n this.defs.append(clipPath);\n\n if (current.activeClipUrl) {\n current.clipGroup = null;\n\n for (const prev of this.extraStack) {\n prev.clipGroup = null;\n }\n\n clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n }\n\n current.activeClipUrl = `url(#${clipId})`;\n this.tgrp = null;\n }\n\n clip(type) {\n this.pendingClip = type;\n }\n\n closePath() {\n const current = this.current;\n\n if (current.path) {\n const d = `${current.path.getAttributeNS(null, \"d\")}Z`;\n current.path.setAttributeNS(null, \"d\", d);\n }\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setTextRise(textRise) {\n this.current.textRise = textRise;\n }\n\n setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setRenderingIntent(intent) {}\n\n setFlatness(flatness) {}\n\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n\n case \"LC\":\n this.setLineCap(value);\n break;\n\n case \"LJ\":\n this.setLineJoin(value);\n break;\n\n case \"ML\":\n this.setMiterLimit(value);\n break;\n\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n\n case \"FL\":\n this.setFlatness(value);\n break;\n\n case \"Font\":\n this.setFont(value);\n break;\n\n case \"CA\":\n this.setStrokeAlpha(value);\n break;\n\n case \"ca\":\n this.setFillAlpha(value);\n break;\n\n default:\n (0, _util.warn)(`Unimplemented graphic state operator ${key}`);\n break;\n }\n }\n }\n\n fill() {\n const current = this.current;\n\n if (current.element) {\n current.element.setAttributeNS(null, \"fill\", current.fillColor);\n current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n this.endPath();\n }\n }\n\n stroke() {\n const current = this.current;\n\n if (current.element) {\n this._setStrokeAttributes(current.element);\n\n current.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n\n _setStrokeAttributes(element, lineWidthScale = 1) {\n const current = this.current;\n let dashArray = current.dashArray;\n\n if (lineWidthScale !== 1 && dashArray.length > 0) {\n dashArray = dashArray.map(function (value) {\n return lineWidthScale * value;\n });\n }\n\n element.setAttributeNS(null, \"stroke\", current.strokeColor);\n element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n element.setAttributeNS(null, \"stroke-width\", pf(lineWidthScale * current.lineWidth) + \"px\");\n element.setAttributeNS(null, \"stroke-dasharray\", dashArray.map(pf).join(\" \"));\n element.setAttributeNS(null, \"stroke-dashoffset\", pf(lineWidthScale * current.dashPhase) + \"px\");\n }\n\n eoFill() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n\n this.fill();\n }\n\n fillStroke() {\n this.stroke();\n this.fill();\n }\n\n eoFillStroke() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n\n this.fillStroke();\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n\n paintSolidColorImageMask() {\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", \"1px\");\n rect.setAttributeNS(null, \"height\", \"1px\");\n rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n\n this._ensureTransformGroup().append(rect);\n }\n\n paintImageXObject(objId) {\n const imgData = objId.startsWith(\"g_\") ? this.commonObjs.get(objId) : this.objs.get(objId);\n\n if (!imgData) {\n (0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`);\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n }\n\n paintInlineImageXObject(imgData, mask) {\n const width = imgData.width;\n const height = imgData.height;\n const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", \"0\");\n cliprect.setAttributeNS(null, \"y\", \"0\");\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n const imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-height));\n imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n imgEl.setAttributeNS(null, \"transform\", `scale(${pf(1 / width)} ${pf(-1 / height)})`);\n\n if (mask) {\n mask.append(imgEl);\n } else {\n this._ensureTransformGroup().append(imgEl);\n }\n }\n\n paintImageMaskXObject(imgData) {\n const current = this.current;\n const width = imgData.width;\n const height = imgData.height;\n const fillColor = current.fillColor;\n current.maskId = `mask${maskCount++}`;\n const mask = this.svgFactory.createElement(\"svg:mask\");\n mask.setAttributeNS(null, \"id\", current.maskId);\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", pf(width));\n rect.setAttributeNS(null, \"height\", pf(height));\n rect.setAttributeNS(null, \"fill\", fillColor);\n rect.setAttributeNS(null, \"mask\", `url(#${current.maskId})`);\n this.defs.append(mask);\n\n this._ensureTransformGroup().append(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n }\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", bbox[0]);\n cliprect.setAttributeNS(null, \"y\", bbox[1]);\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {}\n\n _initialize(viewport) {\n const svg = this.svgFactory.create(viewport.width, viewport.height);\n const definitions = this.svgFactory.createElement(\"svg:defs\");\n svg.append(definitions);\n this.defs = definitions;\n const rootGroup = this.svgFactory.createElement(\"svg:g\");\n rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n svg.append(rootGroup);\n this.svg = rootGroup;\n return svg;\n }\n\n _ensureClipGroup() {\n if (!this.current.clipGroup) {\n const clipGroup = this.svgFactory.createElement(\"svg:g\");\n clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.append(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n\n return this.current.clipGroup;\n }\n\n _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().append(this.tgrp);\n } else {\n this.svg.append(this.tgrp);\n }\n }\n\n return this.tgrp;\n }\n\n };\n}\n\n/***/ }),\n/* 32 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFNodeStream = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _network_utils = __w_pdfjs_require__(33);\n\n;\n\nconst fs = require(\"fs\");\n\nconst http = require(\"http\");\n\nconst https = require(\"https\");\n\nconst url = require(\"url\");\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n const parsedUrl = url.parse(sourceUrl);\n\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n\n return parsedUrl;\n}\n\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n\n this._rangeRequestReaders.push(rangeReader);\n\n return rangeReader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n\n}\n\nexports.PDFNodeStream = PDFNodeStream;\n\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = (0, _util.createPromiseCapability)();\n this._headersCapability = (0, _util.createPromiseCapability)();\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n\n if (chunk === null) {\n this._readCapability = (0, _util.createPromiseCapability)();\n return this.read();\n }\n\n this._loaded += chunk.length;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n\n return;\n }\n\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n\n this._readCapability.resolve();\n }\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\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new _util.AbortException(\"streaming is disabled\"));\n }\n\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n\n}\n\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = (0, _util.createPromiseCapability)();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n\n if (chunk === null) {\n this._readCapability = (0, _util.createPromiseCapability)();\n return this.read();\n }\n\n this._loaded += chunk.length;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded\n });\n }\n\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n\n return;\n }\n\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n\n this._readCapability.resolve();\n }\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\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n\n}\n\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers\n };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new _util.MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n\n this._headersCapability.reject(error);\n\n return;\n }\n\n this._headersCapability.resolve();\n\n this._setReadableStream(response);\n\n const getResponseHeader = name => {\n return this._readableStream.headers[name.toLowerCase()];\n };\n\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\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 = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n };\n\n this._request = null;\n\n if (this._url.protocol === \"http:\") {\n this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n } else {\n this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n\n this._headersCapability.reject(reason);\n });\n\n this._request.end();\n }\n\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n this._httpHeaders = {};\n\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n this._httpHeaders[property] = value;\n }\n\n this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new _util.MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n\n this._setReadableStream(response);\n };\n\n this._request = null;\n\n if (this._url.protocol === \"http:\") {\n this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n } else {\n this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n\n this._request.end();\n }\n\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n fs.lstat(path, (error, stat) => {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new _util.MissingPDFException(`Missing PDF \"${path}\".`);\n }\n\n this._storedError = error;\n\n this._headersCapability.reject(error);\n\n return;\n }\n\n this._contentLength = stat.size;\n\n this._setReadableStream(fs.createReadStream(path));\n\n this._headersCapability.resolve();\n });\n }\n\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n this._setReadableStream(fs.createReadStream(path, {\n start,\n end: end - 1\n }));\n }\n\n}\n\n/***/ }),\n/* 33 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.createResponseStatusError = createResponseStatusError;\nexports.extractFilenameFromHeader = extractFilenameFromHeader;\nexports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;\nexports.validateResponseStatus = validateResponseStatus;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _content_disposition = __w_pdfjs_require__(34);\n\nvar _display_utils = __w_pdfjs_require__(8);\n\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n\n returnValues.suggestedLength = length;\n\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n\n if (disableRange || !isHttp) {\n return returnValues;\n }\n\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"Content-Disposition\");\n\n if (contentDisposition) {\n let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition);\n\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch (ex) {}\n }\n\n if ((0, _display_utils.isPdfFile)(filename)) {\n return filename;\n }\n }\n\n return null;\n}\n\nfunction createResponseStatusError(status, url) {\n if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n return new _util.MissingPDFException('Missing PDF \"' + url + '\".');\n }\n\n return new _util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status);\n}\n\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n/***/ }),\n/* 34 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;\n\nvar _util = __w_pdfjs_require__(1);\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n tmp = rfc2231getparam(contentDisposition);\n\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = (0, _util.stringToBytes)(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch (e) {}\n }\n\n return value;\n }\n\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n\n return value;\n }\n\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n\n if (n in matches) {\n if (n === 0) {\n break;\n }\n\n continue;\n }\n\n matches[n] = [quot, part];\n }\n\n const parts = [];\n\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n\n if (quot) {\n part = unescape(part);\n\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n\n parts.push(part);\n }\n\n return parts.join(\"\");\n }\n\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n\n parts[i] = parts[i].replace(/\\\\(.)/g, \"$1\");\n }\n\n value = parts.join('\"');\n }\n\n return value;\n }\n\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n\n if (encodingend === -1) {\n return extvalue;\n }\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\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n\n return value.replace(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replace(/_/g, \" \");\n text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n\n try {\n text = atob(text);\n } catch (e) {}\n\n return textdecode(charset, text);\n });\n }\n\n return \"\";\n}\n\n/***/ }),\n/* 35 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFNetworkStream = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _network_utils = __w_pdfjs_require__(33);\n\n;\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n\n if (typeof data !== \"string\") {\n return data;\n }\n\n const array = (0, _util.stringToBytes)(data);\n return array.buffer;\n}\n\nclass NetworkManager {\n constructor(url, args = {}) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null);\n this.withCredentials = args.withCredentials || false;\n\n this.getXhr = args.getXhr || function NetworkManager_getXhr() {\n return new XMLHttpRequest();\n };\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end\n };\n\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n\n return this.request(args);\n }\n\n requestFull(listeners) {\n return this.request(listeners);\n }\n\n request(args) {\n const xhr = this.getXhr();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n xhr.setRequestHeader(property, value);\n }\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\n xhr.responseType = \"arraybuffer\";\n\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\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\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n\n if (!pendingRequest) {\n return;\n }\n\n pendingRequest.onProgress?.(evt);\n }\n\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n\n if (!pendingRequest) {\n return;\n }\n\n const xhr = pendingRequest.xhr;\n\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n\n const chunk = getArrayBuffer(xhr);\n\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n\n}\n\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n (0, _util.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\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n\n this._rangeRequestReaders.push(reader);\n\n return reader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n\n}\n\nexports.PDFNetworkStream = PDFNetworkStream;\n\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = (0, _util.createPromiseCapability)();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\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\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n const getResponseHeader = name => {\n return fullRequestXhr.getResponseHeader(name);\n };\n\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n }\n\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n\n this._done = true;\n\n if (this._cachedChunks.length > 0) {\n return;\n }\n\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n\n this._requests.length = 0;\n }\n\n _onError(status) {\n this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url);\n\n this._headersReceivedCapability.reject(this._storedError);\n\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n this._headersReceivedCapability.reject(reason);\n\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n\n this._requests.length = 0;\n\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n\n this._fullRequestReader = null;\n }\n\n}\n\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\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\n _close() {\n this.onClosed?.(this);\n }\n\n _onDone(data) {\n const chunk = data.chunk;\n\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n\n this._done = true;\n\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n\n this._requests.length = 0;\n\n this._close();\n }\n\n _onError(status) {\n this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url);\n\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\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\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n\n this._requests.length = 0;\n\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n\n this._close();\n }\n\n}\n\n/***/ }),\n/* 36 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFFetchStream = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _network_utils = __w_pdfjs_require__(33);\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}\n\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n headers.append(property, value);\n }\n\n return headers;\n}\n\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n\n this._rangeRequestReaders.push(reader);\n\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n\n}\n\nexports.PDFFetchStream = PDFFetchStream;\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 = (0, _util.createPromiseCapability)();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._headers = createHeaders(this._stream.httpHeaders);\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n\n this._reader = response.body.getReader();\n\n this._headersCapability.resolve();\n\n const getResponseHeader = name => {\n return response.headers.get(name);\n };\n\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new _util.AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n\n if (done) {\n return {\n value,\n done\n };\n }\n\n this._loaded += value.byteLength;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n\n const buffer = new Uint8Array(value).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n\n this._abortController.abort();\n }\n\n}\n\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = (0, _util.createPromiseCapability)();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n this._headers = createHeaders(this._stream.httpHeaders);\n\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n\n this._readCapability.resolve();\n\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n\n if (done) {\n return {\n value,\n done\n };\n }\n\n this._loaded += value.byteLength;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded\n });\n }\n\n const buffer = new Uint8Array(value).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n\n this._abortController.abort();\n }\n\n}\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\nvar exports = __webpack_exports__;\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"AnnotationEditorLayer\", ({\n enumerable: true,\n get: function () {\n return _annotation_editor_layer.AnnotationEditorLayer;\n }\n}));\nObject.defineProperty(exports, \"AnnotationEditorParamsType\", ({\n enumerable: true,\n get: function () {\n return _util.AnnotationEditorParamsType;\n }\n}));\nObject.defineProperty(exports, \"AnnotationEditorType\", ({\n enumerable: true,\n get: function () {\n return _util.AnnotationEditorType;\n }\n}));\nObject.defineProperty(exports, \"AnnotationEditorUIManager\", ({\n enumerable: true,\n get: function () {\n return _tools.AnnotationEditorUIManager;\n }\n}));\nObject.defineProperty(exports, \"AnnotationLayer\", ({\n enumerable: true,\n get: function () {\n return _annotation_layer.AnnotationLayer;\n }\n}));\nObject.defineProperty(exports, \"AnnotationMode\", ({\n enumerable: true,\n get: function () {\n return _util.AnnotationMode;\n }\n}));\nObject.defineProperty(exports, \"CMapCompressionType\", ({\n enumerable: true,\n get: function () {\n return _util.CMapCompressionType;\n }\n}));\nObject.defineProperty(exports, \"GlobalWorkerOptions\", ({\n enumerable: true,\n get: function () {\n return _worker_options.GlobalWorkerOptions;\n }\n}));\nObject.defineProperty(exports, \"InvalidPDFException\", ({\n enumerable: true,\n get: function () {\n return _util.InvalidPDFException;\n }\n}));\nObject.defineProperty(exports, \"LoopbackPort\", ({\n enumerable: true,\n get: function () {\n return _api.LoopbackPort;\n }\n}));\nObject.defineProperty(exports, \"MissingPDFException\", ({\n enumerable: true,\n get: function () {\n return _util.MissingPDFException;\n }\n}));\nObject.defineProperty(exports, \"OPS\", ({\n enumerable: true,\n get: function () {\n return _util.OPS;\n }\n}));\nObject.defineProperty(exports, \"PDFDataRangeTransport\", ({\n enumerable: true,\n get: function () {\n return _api.PDFDataRangeTransport;\n }\n}));\nObject.defineProperty(exports, \"PDFDateString\", ({\n enumerable: true,\n get: function () {\n return _display_utils.PDFDateString;\n }\n}));\nObject.defineProperty(exports, \"PDFWorker\", ({\n enumerable: true,\n get: function () {\n return _api.PDFWorker;\n }\n}));\nObject.defineProperty(exports, \"PasswordResponses\", ({\n enumerable: true,\n get: function () {\n return _util.PasswordResponses;\n }\n}));\nObject.defineProperty(exports, \"PermissionFlag\", ({\n enumerable: true,\n get: function () {\n return _util.PermissionFlag;\n }\n}));\nObject.defineProperty(exports, \"PixelsPerInch\", ({\n enumerable: true,\n get: function () {\n return _display_utils.PixelsPerInch;\n }\n}));\nObject.defineProperty(exports, \"RenderingCancelledException\", ({\n enumerable: true,\n get: function () {\n return _display_utils.RenderingCancelledException;\n }\n}));\nObject.defineProperty(exports, \"SVGGraphics\", ({\n enumerable: true,\n get: function () {\n return _svg.SVGGraphics;\n }\n}));\nObject.defineProperty(exports, \"UNSUPPORTED_FEATURES\", ({\n enumerable: true,\n get: function () {\n return _util.UNSUPPORTED_FEATURES;\n }\n}));\nObject.defineProperty(exports, \"UnexpectedResponseException\", ({\n enumerable: true,\n get: function () {\n return _util.UnexpectedResponseException;\n }\n}));\nObject.defineProperty(exports, \"Util\", ({\n enumerable: true,\n get: function () {\n return _util.Util;\n }\n}));\nObject.defineProperty(exports, \"VerbosityLevel\", ({\n enumerable: true,\n get: function () {\n return _util.VerbosityLevel;\n }\n}));\nObject.defineProperty(exports, \"XfaLayer\", ({\n enumerable: true,\n get: function () {\n return _xfa_layer.XfaLayer;\n }\n}));\nObject.defineProperty(exports, \"build\", ({\n enumerable: true,\n get: function () {\n return _api.build;\n }\n}));\nObject.defineProperty(exports, \"createPromiseCapability\", ({\n enumerable: true,\n get: function () {\n return _util.createPromiseCapability;\n }\n}));\nObject.defineProperty(exports, \"createValidAbsoluteUrl\", ({\n enumerable: true,\n get: function () {\n return _util.createValidAbsoluteUrl;\n }\n}));\nObject.defineProperty(exports, \"getDocument\", ({\n enumerable: true,\n get: function () {\n return _api.getDocument;\n }\n}));\nObject.defineProperty(exports, \"getFilenameFromUrl\", ({\n enumerable: true,\n get: function () {\n return _display_utils.getFilenameFromUrl;\n }\n}));\nObject.defineProperty(exports, \"getPdfFilenameFromUrl\", ({\n enumerable: true,\n get: function () {\n return _display_utils.getPdfFilenameFromUrl;\n }\n}));\nObject.defineProperty(exports, \"getXfaPageViewport\", ({\n enumerable: true,\n get: function () {\n return _display_utils.getXfaPageViewport;\n }\n}));\nObject.defineProperty(exports, \"isPdfFile\", ({\n enumerable: true,\n get: function () {\n return _display_utils.isPdfFile;\n }\n}));\nObject.defineProperty(exports, \"loadScript\", ({\n enumerable: true,\n get: function () {\n return _display_utils.loadScript;\n }\n}));\nObject.defineProperty(exports, \"renderTextLayer\", ({\n enumerable: true,\n get: function () {\n return _text_layer.renderTextLayer;\n }\n}));\nObject.defineProperty(exports, \"shadow\", ({\n enumerable: true,\n get: function () {\n return _util.shadow;\n }\n}));\nObject.defineProperty(exports, \"version\", ({\n enumerable: true,\n get: function () {\n return _api.version;\n }\n}));\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _api = __w_pdfjs_require__(4);\n\nvar _display_utils = __w_pdfjs_require__(8);\n\nvar _annotation_editor_layer = __w_pdfjs_require__(22);\n\nvar _tools = __w_pdfjs_require__(7);\n\nvar _annotation_layer = __w_pdfjs_require__(27);\n\nvar _worker_options = __w_pdfjs_require__(15);\n\nvar _is_node = __w_pdfjs_require__(3);\n\nvar _text_layer = __w_pdfjs_require__(30);\n\nvar _svg = __w_pdfjs_require__(31);\n\nvar _xfa_layer = __w_pdfjs_require__(29);\n\nconst pdfjsVersion = '2.16.105';\nconst pdfjsBuild = '172ccdbe5';\n{\n if (_is_node.isNodeJS) {\n const {\n PDFNodeStream\n } = __w_pdfjs_require__(32);\n\n (0, _api.setPDFNetworkStreamFactory)(params => {\n return new PDFNodeStream(params);\n });\n } else {\n const {\n PDFNetworkStream\n } = __w_pdfjs_require__(35);\n\n const {\n PDFFetchStream\n } = __w_pdfjs_require__(36);\n\n (0, _api.setPDFNetworkStreamFactory)(params => {\n if ((0, _display_utils.isValidFetchUrl)(params.url)) {\n return new PDFFetchStream(params);\n }\n\n return new PDFNetworkStream(params);\n });\n }\n}\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=pdf.js.map","import * as React from 'react';\nexport default function useEvent(callback) {\n var fnRef = React.useRef();\n fnRef.current = callback;\n var memoFn = React.useCallback(function () {\n var _fnRef$current;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_fnRef$current = fnRef.current) === null || _fnRef$current === void 0 ? void 0 : _fnRef$current.call.apply(_fnRef$current, [fnRef].concat(args));\n }, []);\n return memoFn;\n}","import * as React from 'react';\nimport canUseDom from \"../Dom/canUseDom\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nvar useInternalLayoutEffect = process.env.NODE_ENV !== 'test' && canUseDom() ? React.useLayoutEffect : React.useEffect;\nvar useLayoutEffect = function useLayoutEffect(callback, deps) {\n var firstMountRef = React.useRef(true);\n useInternalLayoutEffect(function () {\n return callback(firstMountRef.current);\n }, deps);\n\n // We tell react that first mount has passed\n useInternalLayoutEffect(function () {\n firstMountRef.current = false;\n return function () {\n firstMountRef.current = true;\n };\n }, []);\n};\nexport var useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) {\n useLayoutEffect(function (firstMount) {\n if (!firstMount) {\n return callback();\n }\n }, deps);\n};\nexport default useLayoutEffect;","export default function canUseDom() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n/**\n * Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed.\n * We do not make this auto is to avoid real memory leak.\n * Developer should confirm it's safe to ignore themselves.\n */\nexport default function useSafeState(defaultValue) {\n var destroyRef = React.useRef(false);\n var _React$useState = React.useState(defaultValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n value = _React$useState2[0],\n setValue = _React$useState2[1];\n React.useEffect(function () {\n destroyRef.current = false;\n return function () {\n destroyRef.current = true;\n };\n }, []);\n function safeSetState(updater, ignoreDestroy) {\n if (ignoreDestroy && destroyRef.current) {\n return;\n }\n setValue(updater);\n }\n return [value, safeSetState];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"./useEvent\";\nimport { useLayoutUpdateEffect } from \"./useLayoutEffect\";\nimport useState from \"./useState\";\n/** We only think `undefined` is empty */\nfunction hasValue(value) {\n return value !== undefined;\n}\n\n/**\n * Similar to `useState` but will use props value if provided.\n * Note that internal use rc-util `useState` hook.\n */\nexport default function useMergedState(defaultStateValue, option) {\n var _ref = option || {},\n defaultValue = _ref.defaultValue,\n value = _ref.value,\n onChange = _ref.onChange,\n postState = _ref.postState;\n\n // ======================= Init =======================\n var _useState = useState(function () {\n if (hasValue(value)) {\n return value;\n } else if (hasValue(defaultValue)) {\n return typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n } else {\n return typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue;\n }\n }),\n _useState2 = _slicedToArray(_useState, 2),\n innerValue = _useState2[0],\n setInnerValue = _useState2[1];\n var mergedValue = value !== undefined ? value : innerValue;\n var postMergedValue = postState ? postState(mergedValue) : mergedValue;\n\n // ====================== Change ======================\n var onChangeFn = useEvent(onChange);\n var _useState3 = useState([mergedValue]),\n _useState4 = _slicedToArray(_useState3, 2),\n prevValue = _useState4[0],\n setPrevValue = _useState4[1];\n useLayoutUpdateEffect(function () {\n var prev = prevValue[0];\n if (innerValue !== prev) {\n onChangeFn(innerValue, prev);\n }\n }, [prevValue]);\n\n // Sync value back to `undefined` when it from control to un-control\n useLayoutUpdateEffect(function () {\n if (!hasValue(value)) {\n setInnerValue(value);\n }\n }, [value]);\n\n // ====================== Update ======================\n var triggerChange = useEvent(function (updater, ignoreDestroy) {\n setInnerValue(updater, ignoreDestroy);\n setPrevValue([mergedValue], ignoreDestroy);\n });\n return [postMergedValue, triggerChange];\n}","/* eslint-disable no-console */\nvar warned = {};\nvar preWarningFns = [];\n\n/**\n * Pre warning enable you to parse content before console.error.\n * Modify to null will prevent warning.\n */\nexport var preMessage = function preMessage(fn) {\n preWarningFns.push(fn);\n};\n\n/**\n * Warning if condition not match.\n * @param valid Condition\n * @param message Warning message\n * @example\n * ```js\n * warning(false, 'some error'); // print some error\n * warning(true, 'some error'); // print nothing\n * warning(1 === 2, 'some error'); // print some error\n * ```\n */\nexport function warning(valid, message) {\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'warning');\n }, message);\n if (finalMessage) {\n console.error(\"Warning: \".concat(finalMessage));\n }\n }\n}\n\n/** @see Similar to {@link warning} */\nexport function note(valid, message) {\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'note');\n }, message);\n if (finalMessage) {\n console.warn(\"Note: \".concat(finalMessage));\n }\n }\n}\nexport function resetWarned() {\n warned = {};\n}\nexport function call(method, valid, message) {\n if (!valid && !warned[message]) {\n method(false, message);\n warned[message] = true;\n }\n}\n\n/** @see Same as {@link warning}, but only warn once for the same message */\nexport function warningOnce(valid, message) {\n call(warning, valid, message);\n}\n\n/** @see Same as {@link warning}, but only warn once for the same message */\nexport function noteOnce(valid, message) {\n call(note, valid, message);\n}\nwarningOnce.preMessage = preMessage;\nwarningOnce.resetWarned = resetWarned;\nwarningOnce.noteOnce = noteOnce;\nexport default warningOnce;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport warning from \"./warning\";\n\n/**\n * Deeply compares two object literals.\n * @param obj1 object 1\n * @param obj2 object 2\n * @param shallow shallow compare\n * @returns\n */\nfunction isEqual(obj1, obj2) {\n var shallow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // https://github.com/mapbox/mapbox-gl-js/pull/5979/files#diff-fde7145050c47cc3a306856efd5f9c3016e86e859de9afbd02c879be5067e58f\n var refSet = new Set();\n function deepEqual(a, b) {\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var circular = refSet.has(a);\n warning(!circular, 'Warning: There may be circular references');\n if (circular) {\n return false;\n }\n if (a === b) {\n return true;\n }\n if (shallow && level > 1) {\n return false;\n }\n refSet.add(a);\n var newLevel = level + 1;\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i], newLevel)) {\n return false;\n }\n }\n return true;\n }\n if (a && b && _typeof(a) === 'object' && _typeof(b) === 'object') {\n var keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) {\n return false;\n }\n return keys.every(function (key) {\n return deepEqual(a[key], b[key], newLevel);\n });\n }\n // other\n return false;\n }\n return deepEqual(obj1, obj2);\n}\nexport default isEqual;","export function getOffset(value, min, max) {\n return (value - min) / (max - min);\n}\nexport function getDirectionStyle(direction, value, min, max) {\n var offset = getOffset(value, min, max);\n var positionStyle = {};\n switch (direction) {\n case 'rtl':\n positionStyle.right = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateX(50%)';\n break;\n case 'btt':\n positionStyle.bottom = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateY(50%)';\n break;\n case 'ttb':\n positionStyle.top = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateY(-50%)';\n break;\n default:\n positionStyle.left = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateX(-50%)';\n break;\n }\n return positionStyle;\n}\n\n/** Return index value if is list or return value directly */\nexport function getIndex(value, index) {\n return Array.isArray(value) ? value[index] : value;\n}","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\n\nvar KeyCode = {\n /**\n * MAC_ENTER\n */\n MAC_ENTER: 3,\n /**\n * BACKSPACE\n */\n BACKSPACE: 8,\n /**\n * TAB\n */\n TAB: 9,\n /**\n * NUMLOCK on FF/Safari Mac\n */\n NUM_CENTER: 12,\n // NUMLOCK on FF/Safari Mac\n /**\n * ENTER\n */\n ENTER: 13,\n /**\n * SHIFT\n */\n SHIFT: 16,\n /**\n * CTRL\n */\n CTRL: 17,\n /**\n * ALT\n */\n ALT: 18,\n /**\n * PAUSE\n */\n PAUSE: 19,\n /**\n * CAPS_LOCK\n */\n CAPS_LOCK: 20,\n /**\n * ESC\n */\n ESC: 27,\n /**\n * SPACE\n */\n SPACE: 32,\n /**\n * PAGE_UP\n */\n PAGE_UP: 33,\n // also NUM_NORTH_EAST\n /**\n * PAGE_DOWN\n */\n PAGE_DOWN: 34,\n // also NUM_SOUTH_EAST\n /**\n * END\n */\n END: 35,\n // also NUM_SOUTH_WEST\n /**\n * HOME\n */\n HOME: 36,\n // also NUM_NORTH_WEST\n /**\n * LEFT\n */\n LEFT: 37,\n // also NUM_WEST\n /**\n * UP\n */\n UP: 38,\n // also NUM_NORTH\n /**\n * RIGHT\n */\n RIGHT: 39,\n // also NUM_EAST\n /**\n * DOWN\n */\n DOWN: 40,\n // also NUM_SOUTH\n /**\n * PRINT_SCREEN\n */\n PRINT_SCREEN: 44,\n /**\n * INSERT\n */\n INSERT: 45,\n // also NUM_INSERT\n /**\n * DELETE\n */\n DELETE: 46,\n // also NUM_DELETE\n /**\n * ZERO\n */\n ZERO: 48,\n /**\n * ONE\n */\n ONE: 49,\n /**\n * TWO\n */\n TWO: 50,\n /**\n * THREE\n */\n THREE: 51,\n /**\n * FOUR\n */\n FOUR: 52,\n /**\n * FIVE\n */\n FIVE: 53,\n /**\n * SIX\n */\n SIX: 54,\n /**\n * SEVEN\n */\n SEVEN: 55,\n /**\n * EIGHT\n */\n EIGHT: 56,\n /**\n * NINE\n */\n NINE: 57,\n /**\n * QUESTION_MARK\n */\n QUESTION_MARK: 63,\n // needs localization\n /**\n * A\n */\n A: 65,\n /**\n * B\n */\n B: 66,\n /**\n * C\n */\n C: 67,\n /**\n * D\n */\n D: 68,\n /**\n * E\n */\n E: 69,\n /**\n * F\n */\n F: 70,\n /**\n * G\n */\n G: 71,\n /**\n * H\n */\n H: 72,\n /**\n * I\n */\n I: 73,\n /**\n * J\n */\n J: 74,\n /**\n * K\n */\n K: 75,\n /**\n * L\n */\n L: 76,\n /**\n * M\n */\n M: 77,\n /**\n * N\n */\n N: 78,\n /**\n * O\n */\n O: 79,\n /**\n * P\n */\n P: 80,\n /**\n * Q\n */\n Q: 81,\n /**\n * R\n */\n R: 82,\n /**\n * S\n */\n S: 83,\n /**\n * T\n */\n T: 84,\n /**\n * U\n */\n U: 85,\n /**\n * V\n */\n V: 86,\n /**\n * W\n */\n W: 87,\n /**\n * X\n */\n X: 88,\n /**\n * Y\n */\n Y: 89,\n /**\n * Z\n */\n Z: 90,\n /**\n * META\n */\n META: 91,\n // WIN_KEY_LEFT\n /**\n * WIN_KEY_RIGHT\n */\n WIN_KEY_RIGHT: 92,\n /**\n * CONTEXT_MENU\n */\n CONTEXT_MENU: 93,\n /**\n * NUM_ZERO\n */\n NUM_ZERO: 96,\n /**\n * NUM_ONE\n */\n NUM_ONE: 97,\n /**\n * NUM_TWO\n */\n NUM_TWO: 98,\n /**\n * NUM_THREE\n */\n NUM_THREE: 99,\n /**\n * NUM_FOUR\n */\n NUM_FOUR: 100,\n /**\n * NUM_FIVE\n */\n NUM_FIVE: 101,\n /**\n * NUM_SIX\n */\n NUM_SIX: 102,\n /**\n * NUM_SEVEN\n */\n NUM_SEVEN: 103,\n /**\n * NUM_EIGHT\n */\n NUM_EIGHT: 104,\n /**\n * NUM_NINE\n */\n NUM_NINE: 105,\n /**\n * NUM_MULTIPLY\n */\n NUM_MULTIPLY: 106,\n /**\n * NUM_PLUS\n */\n NUM_PLUS: 107,\n /**\n * NUM_MINUS\n */\n NUM_MINUS: 109,\n /**\n * NUM_PERIOD\n */\n NUM_PERIOD: 110,\n /**\n * NUM_DIVISION\n */\n NUM_DIVISION: 111,\n /**\n * F1\n */\n F1: 112,\n /**\n * F2\n */\n F2: 113,\n /**\n * F3\n */\n F3: 114,\n /**\n * F4\n */\n F4: 115,\n /**\n * F5\n */\n F5: 116,\n /**\n * F6\n */\n F6: 117,\n /**\n * F7\n */\n F7: 118,\n /**\n * F8\n */\n F8: 119,\n /**\n * F9\n */\n F9: 120,\n /**\n * F10\n */\n F10: 121,\n /**\n * F11\n */\n F11: 122,\n /**\n * F12\n */\n F12: 123,\n /**\n * NUMLOCK\n */\n NUMLOCK: 144,\n /**\n * SEMICOLON\n */\n SEMICOLON: 186,\n // needs localization\n /**\n * DASH\n */\n DASH: 189,\n // needs localization\n /**\n * EQUALS\n */\n EQUALS: 187,\n // needs localization\n /**\n * COMMA\n */\n COMMA: 188,\n // needs localization\n /**\n * PERIOD\n */\n PERIOD: 190,\n // needs localization\n /**\n * SLASH\n */\n SLASH: 191,\n // needs localization\n /**\n * APOSTROPHE\n */\n APOSTROPHE: 192,\n // needs localization\n /**\n * SINGLE_QUOTE\n */\n SINGLE_QUOTE: 222,\n // needs localization\n /**\n * OPEN_SQUARE_BRACKET\n */\n OPEN_SQUARE_BRACKET: 219,\n // needs localization\n /**\n * BACKSLASH\n */\n BACKSLASH: 220,\n // needs localization\n /**\n * CLOSE_SQUARE_BRACKET\n */\n CLOSE_SQUARE_BRACKET: 221,\n // needs localization\n /**\n * WIN_KEY\n */\n WIN_KEY: 224,\n /**\n * MAC_FF_META\n */\n MAC_FF_META: 224,\n // Firefox (Gecko) fires this for the meta key instead of 91\n /**\n * WIN_IME\n */\n WIN_IME: 229,\n // ======================== Function ========================\n /**\n * whether text and modified key is entered at the same time.\n */\n isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n var keyCode = e.keyCode;\n if (e.altKey && !e.ctrlKey || e.metaKey ||\n // Function keys don't generate text\n keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n return false;\n }\n\n // The following keys are quite harmless, even in combination with\n // CTRL, ALT or SHIFT.\n switch (keyCode) {\n case KeyCode.ALT:\n case KeyCode.CAPS_LOCK:\n case KeyCode.CONTEXT_MENU:\n case KeyCode.CTRL:\n case KeyCode.DOWN:\n case KeyCode.END:\n case KeyCode.ESC:\n case KeyCode.HOME:\n case KeyCode.INSERT:\n case KeyCode.LEFT:\n case KeyCode.MAC_FF_META:\n case KeyCode.META:\n case KeyCode.NUMLOCK:\n case KeyCode.NUM_CENTER:\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAUSE:\n case KeyCode.PRINT_SCREEN:\n case KeyCode.RIGHT:\n case KeyCode.SHIFT:\n case KeyCode.UP:\n case KeyCode.WIN_KEY:\n case KeyCode.WIN_KEY_RIGHT:\n return false;\n default:\n return true;\n }\n },\n /**\n * whether character is entered.\n */\n isCharacterKey: function isCharacterKey(keyCode) {\n if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n return true;\n }\n if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n return true;\n }\n if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n return true;\n }\n\n // Safari sends zero key code for non-latin characters.\n if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n return true;\n }\n switch (keyCode) {\n case KeyCode.SPACE:\n case KeyCode.QUESTION_MARK:\n case KeyCode.NUM_PLUS:\n case KeyCode.NUM_MINUS:\n case KeyCode.NUM_PERIOD:\n case KeyCode.NUM_DIVISION:\n case KeyCode.SEMICOLON:\n case KeyCode.DASH:\n case KeyCode.EQUALS:\n case KeyCode.COMMA:\n case KeyCode.PERIOD:\n case KeyCode.SLASH:\n case KeyCode.APOSTROPHE:\n case KeyCode.SINGLE_QUOTE:\n case KeyCode.OPEN_SQUARE_BRACKET:\n case KeyCode.BACKSLASH:\n case KeyCode.CLOSE_SQUARE_BRACKET:\n return true;\n default:\n return false;\n }\n }\n};\nexport default KeyCode;","import * as React from 'react';\nvar SliderContext = /*#__PURE__*/React.createContext({\n min: 0,\n max: 0,\n direction: 'ltr',\n step: 1,\n includedStart: 0,\n includedEnd: 0,\n tabIndex: 0,\n keyboard: true,\n styles: {},\n classNames: {}\n});\nexport default SliderContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"value\", \"valueIndex\", \"onStartMove\", \"style\", \"render\", \"dragging\", \"onOffsetChange\", \"onChangeComplete\", \"onFocus\", \"onMouseEnter\"];\nimport cls from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getDirectionStyle, getIndex } from \"../util\";\nvar Handle = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n value = props.value,\n valueIndex = props.valueIndex,\n onStartMove = props.onStartMove,\n style = props.style,\n render = props.render,\n dragging = props.dragging,\n onOffsetChange = props.onOffsetChange,\n onChangeComplete = props.onChangeComplete,\n onFocus = props.onFocus,\n onMouseEnter = props.onMouseEnter,\n restProps = _objectWithoutProperties(props, _excluded);\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n disabled = _React$useContext.disabled,\n keyboard = _React$useContext.keyboard,\n range = _React$useContext.range,\n tabIndex = _React$useContext.tabIndex,\n ariaLabelForHandle = _React$useContext.ariaLabelForHandle,\n ariaLabelledByForHandle = _React$useContext.ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle = _React$useContext.ariaValueTextFormatterForHandle,\n styles = _React$useContext.styles,\n classNames = _React$useContext.classNames;\n var handlePrefixCls = \"\".concat(prefixCls, \"-handle\");\n\n // ============================ Events ============================\n var onInternalStartMove = function onInternalStartMove(e) {\n if (!disabled) {\n onStartMove(e, valueIndex);\n }\n };\n var onInternalFocus = function onInternalFocus(e) {\n onFocus === null || onFocus === void 0 || onFocus(e, valueIndex);\n };\n var onInternalMouseEnter = function onInternalMouseEnter(e) {\n onMouseEnter(e, valueIndex);\n };\n\n // =========================== Keyboard ===========================\n var onKeyDown = function onKeyDown(e) {\n if (!disabled && keyboard) {\n var offset = null;\n\n // Change the value\n switch (e.which || e.keyCode) {\n case KeyCode.LEFT:\n offset = direction === 'ltr' || direction === 'btt' ? -1 : 1;\n break;\n case KeyCode.RIGHT:\n offset = direction === 'ltr' || direction === 'btt' ? 1 : -1;\n break;\n\n // Up is plus\n case KeyCode.UP:\n offset = direction !== 'ttb' ? 1 : -1;\n break;\n\n // Down is minus\n case KeyCode.DOWN:\n offset = direction !== 'ttb' ? -1 : 1;\n break;\n case KeyCode.HOME:\n offset = 'min';\n break;\n case KeyCode.END:\n offset = 'max';\n break;\n case KeyCode.PAGE_UP:\n offset = 2;\n break;\n case KeyCode.PAGE_DOWN:\n offset = -2;\n break;\n }\n if (offset !== null) {\n e.preventDefault();\n onOffsetChange(offset, valueIndex);\n }\n }\n };\n var handleKeyUp = function handleKeyUp(e) {\n switch (e.which || e.keyCode) {\n case KeyCode.LEFT:\n case KeyCode.RIGHT:\n case KeyCode.UP:\n case KeyCode.DOWN:\n case KeyCode.HOME:\n case KeyCode.END:\n case KeyCode.PAGE_UP:\n case KeyCode.PAGE_DOWN:\n onChangeComplete === null || onChangeComplete === void 0 || onChangeComplete();\n break;\n }\n };\n\n // ============================ Offset ============================\n var positionStyle = getDirectionStyle(direction, value, min, max);\n\n // ============================ Render ============================\n var divProps = {};\n if (valueIndex !== null) {\n var _getIndex;\n divProps = {\n tabIndex: disabled ? null : getIndex(tabIndex, valueIndex),\n role: 'slider',\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuenow': value,\n 'aria-disabled': disabled,\n 'aria-label': getIndex(ariaLabelForHandle, valueIndex),\n 'aria-labelledby': getIndex(ariaLabelledByForHandle, valueIndex),\n 'aria-valuetext': (_getIndex = getIndex(ariaValueTextFormatterForHandle, valueIndex)) === null || _getIndex === void 0 ? void 0 : _getIndex(value),\n 'aria-orientation': direction === 'ltr' || direction === 'rtl' ? 'horizontal' : 'vertical',\n onMouseDown: onInternalStartMove,\n onTouchStart: onInternalStartMove,\n onFocus: onInternalFocus,\n onMouseEnter: onInternalMouseEnter,\n onKeyDown: onKeyDown,\n onKeyUp: handleKeyUp\n };\n }\n var handleNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n className: cls(handlePrefixCls, _defineProperty(_defineProperty({}, \"\".concat(handlePrefixCls, \"-\").concat(valueIndex + 1), valueIndex !== null && range), \"\".concat(handlePrefixCls, \"-dragging\"), dragging), classNames.handle),\n style: _objectSpread(_objectSpread(_objectSpread({}, positionStyle), style), styles.handle)\n }, divProps, restProps));\n\n // Customize\n if (render) {\n handleNode = render(handleNode, {\n index: valueIndex,\n prefixCls: prefixCls,\n value: value,\n dragging: dragging\n });\n }\n return handleNode;\n});\nif (process.env.NODE_ENV !== 'production') {\n Handle.displayName = 'Handle';\n}\nexport default Handle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"style\", \"onStartMove\", \"onOffsetChange\", \"values\", \"handleRender\", \"activeHandleRender\", \"draggingIndex\", \"onFocus\"];\nimport * as React from 'react';\nimport { getIndex } from \"../util\";\nimport Handle from \"./Handle\";\nvar Handles = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n style = props.style,\n onStartMove = props.onStartMove,\n onOffsetChange = props.onOffsetChange,\n values = props.values,\n handleRender = props.handleRender,\n activeHandleRender = props.activeHandleRender,\n draggingIndex = props.draggingIndex,\n onFocus = props.onFocus,\n restProps = _objectWithoutProperties(props, _excluded);\n var handlesRef = React.useRef({});\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus(index) {\n var _handlesRef$current$i;\n (_handlesRef$current$i = handlesRef.current[index]) === null || _handlesRef$current$i === void 0 || _handlesRef$current$i.focus();\n }\n };\n });\n\n // =========================== Active ===========================\n var _React$useState = React.useState(-1),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n activeIndex = _React$useState2[0],\n setActiveIndex = _React$useState2[1];\n var onHandleFocus = function onHandleFocus(e, index) {\n setActiveIndex(index);\n onFocus === null || onFocus === void 0 || onFocus(e);\n };\n var onHandleMouseEnter = function onHandleMouseEnter(e, index) {\n setActiveIndex(index);\n };\n\n // =========================== Render ===========================\n // Handle Props\n var handleProps = _objectSpread({\n prefixCls: prefixCls,\n onStartMove: onStartMove,\n onOffsetChange: onOffsetChange,\n render: handleRender,\n onFocus: onHandleFocus,\n onMouseEnter: onHandleMouseEnter\n }, restProps);\n return /*#__PURE__*/React.createElement(React.Fragment, null, values.map(function (value, index) {\n return /*#__PURE__*/React.createElement(Handle, _extends({\n ref: function ref(node) {\n if (!node) {\n delete handlesRef.current[index];\n } else {\n handlesRef.current[index] = node;\n }\n },\n dragging: draggingIndex === index,\n style: getIndex(style, index),\n key: index,\n value: value,\n valueIndex: index\n }, handleProps));\n }), activeHandleRender && /*#__PURE__*/React.createElement(Handle, _extends({\n key: \"a11y\"\n }, handleProps, {\n value: values[activeIndex],\n valueIndex: null,\n dragging: draggingIndex !== -1,\n render: activeHandleRender,\n style: {\n pointerEvents: 'none'\n },\n tabIndex: null,\n \"aria-hidden\": true\n })));\n});\nif (process.env.NODE_ENV !== 'production') {\n Handles.displayName = 'Handles';\n}\nexport default Handles;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getDirectionStyle } from \"../util\";\nvar Mark = function Mark(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n children = props.children,\n value = props.value,\n _onClick = props.onClick;\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n includedStart = _React$useContext.includedStart,\n includedEnd = _React$useContext.includedEnd,\n included = _React$useContext.included;\n var textCls = \"\".concat(prefixCls, \"-text\");\n\n // ============================ Offset ============================\n var positionStyle = getDirectionStyle(direction, value, min, max);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(textCls, _defineProperty({}, \"\".concat(textCls, \"-active\"), included && includedStart <= value && value <= includedEnd)),\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: function onMouseDown(e) {\n e.stopPropagation();\n },\n onClick: function onClick() {\n _onClick(value);\n }\n }, children);\n};\nexport default Mark;","import * as React from 'react';\nimport Mark from \"./Mark\";\nvar Marks = function Marks(props) {\n var prefixCls = props.prefixCls,\n marks = props.marks,\n onClick = props.onClick;\n var markPrefixCls = \"\".concat(prefixCls, \"-mark\");\n\n // Not render mark if empty\n if (!marks.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: markPrefixCls\n }, marks.map(function (_ref) {\n var value = _ref.value,\n style = _ref.style,\n label = _ref.label;\n return /*#__PURE__*/React.createElement(Mark, {\n key: value,\n prefixCls: markPrefixCls,\n style: style,\n value: value,\n onClick: onClick\n }, label);\n }));\n};\nexport default Marks;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getDirectionStyle } from \"../util\";\nvar Dot = function Dot(props) {\n var prefixCls = props.prefixCls,\n value = props.value,\n style = props.style,\n activeStyle = props.activeStyle;\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n included = _React$useContext.included,\n includedStart = _React$useContext.includedStart,\n includedEnd = _React$useContext.includedEnd;\n var dotClassName = \"\".concat(prefixCls, \"-dot\");\n var active = included && includedStart <= value && value <= includedEnd;\n\n // ============================ Offset ============================\n var mergedStyle = _objectSpread(_objectSpread({}, getDirectionStyle(direction, value, min, max)), typeof style === 'function' ? style(value) : style);\n if (active) {\n mergedStyle = _objectSpread(_objectSpread({}, mergedStyle), typeof activeStyle === 'function' ? activeStyle(value) : activeStyle);\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(dotClassName, _defineProperty({}, \"\".concat(dotClassName, \"-active\"), active)),\n style: mergedStyle\n });\n};\nexport default Dot;","import * as React from 'react';\nimport SliderContext from \"../context\";\nimport Dot from \"./Dot\";\nvar Steps = function Steps(props) {\n var prefixCls = props.prefixCls,\n marks = props.marks,\n dots = props.dots,\n style = props.style,\n activeStyle = props.activeStyle;\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n step = _React$useContext.step;\n var stepDots = React.useMemo(function () {\n var dotSet = new Set();\n\n // Add marks\n marks.forEach(function (mark) {\n dotSet.add(mark.value);\n });\n\n // Fill dots\n if (dots && step !== null) {\n var current = min;\n while (current <= max) {\n dotSet.add(current);\n current += step;\n }\n }\n return Array.from(dotSet);\n }, [min, max, step, dots, marks]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-step\")\n }, stepDots.map(function (dotValue) {\n return /*#__PURE__*/React.createElement(Dot, {\n prefixCls: prefixCls,\n key: dotValue,\n value: dotValue,\n style: style,\n activeStyle: activeStyle\n });\n }));\n};\nexport default Steps;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport cls from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getOffset } from \"../util\";\nvar Track = function Track(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n start = props.start,\n end = props.end,\n index = props.index,\n onStartMove = props.onStartMove,\n replaceCls = props.replaceCls;\n var _React$useContext = React.useContext(SliderContext),\n direction = _React$useContext.direction,\n min = _React$useContext.min,\n max = _React$useContext.max,\n disabled = _React$useContext.disabled,\n range = _React$useContext.range,\n classNames = _React$useContext.classNames;\n var trackPrefixCls = \"\".concat(prefixCls, \"-track\");\n var offsetStart = getOffset(start, min, max);\n var offsetEnd = getOffset(end, min, max);\n\n // ============================ Events ============================\n var onInternalStartMove = function onInternalStartMove(e) {\n if (!disabled && onStartMove) {\n onStartMove(e, -1);\n }\n };\n\n // ============================ Render ============================\n var positionStyle = {};\n switch (direction) {\n case 'rtl':\n positionStyle.right = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n case 'btt':\n positionStyle.bottom = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n case 'ttb':\n positionStyle.top = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n default:\n positionStyle.left = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n }\n var className = replaceCls || cls(trackPrefixCls, _defineProperty(_defineProperty({}, \"\".concat(trackPrefixCls, \"-\").concat(index + 1), index !== null && range), \"\".concat(prefixCls, \"-track-draggable\"), onStartMove), classNames.track);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: onInternalStartMove,\n onTouchStart: onInternalStartMove\n });\n};\nexport default Track;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport cls from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getIndex } from \"../util\";\nimport Track from \"./Track\";\nvar Tracks = function Tracks(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n values = props.values,\n startPoint = props.startPoint,\n onStartMove = props.onStartMove;\n var _React$useContext = React.useContext(SliderContext),\n included = _React$useContext.included,\n range = _React$useContext.range,\n min = _React$useContext.min,\n styles = _React$useContext.styles,\n classNames = _React$useContext.classNames;\n\n // =========================== List ===========================\n var trackList = React.useMemo(function () {\n if (!range) {\n // null value do not have track\n if (values.length === 0) {\n return [];\n }\n var startValue = startPoint !== null && startPoint !== void 0 ? startPoint : min;\n var endValue = values[0];\n return [{\n start: Math.min(startValue, endValue),\n end: Math.max(startValue, endValue)\n }];\n }\n\n // Multiple\n var list = [];\n for (var i = 0; i < values.length - 1; i += 1) {\n list.push({\n start: values[i],\n end: values[i + 1]\n });\n }\n return list;\n }, [values, range, startPoint, min]);\n if (!included) {\n return null;\n }\n\n // ========================== Render ==========================\n var tracksNode = classNames.tracks || styles.tracks ? /*#__PURE__*/React.createElement(Track, {\n index: null,\n prefixCls: prefixCls,\n start: trackList[0].start,\n end: trackList[trackList.length - 1].end,\n replaceCls: cls(classNames.tracks, \"\".concat(prefixCls, \"-tracks\")),\n style: styles.tracks\n }) : null;\n return /*#__PURE__*/React.createElement(React.Fragment, null, tracksNode, trackList.map(function (_ref, index) {\n var start = _ref.start,\n end = _ref.end;\n return /*#__PURE__*/React.createElement(Track, {\n index: index,\n prefixCls: prefixCls,\n style: _objectSpread(_objectSpread({}, getIndex(style, index)), styles.track),\n start: start,\n end: end,\n key: index,\n onStartMove: onStartMove\n });\n }));\n};\nexport default Tracks;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { isValidElement, version } from 'react';\nimport { ForwardRef, isFragment, isMemo } from 'react-is';\nimport useMemo from \"./hooks/useMemo\";\nexport var fillRef = function fillRef(ref, node) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (_typeof(ref) === 'object' && ref && 'current' in ref) {\n ref.current = node;\n }\n};\n\n/**\n * Merge refs into one ref function to support ref passing.\n */\nexport var composeRef = function composeRef() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n var refList = refs.filter(Boolean);\n if (refList.length <= 1) {\n return refList[0];\n }\n return function (node) {\n refs.forEach(function (ref) {\n fillRef(ref, node);\n });\n };\n};\nexport var useComposeRef = function useComposeRef() {\n for (var _len2 = arguments.length, refs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n refs[_key2] = arguments[_key2];\n }\n return useMemo(function () {\n return composeRef.apply(void 0, refs);\n }, refs, function (prev, next) {\n return prev.length !== next.length || prev.every(function (ref, i) {\n return ref !== next[i];\n });\n });\n};\nexport var supportRef = function supportRef(nodeOrComponent) {\n var _type$prototype, _nodeOrComponent$prot;\n var type = isMemo(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type;\n\n // Function component node\n if (typeof type === 'function' && !((_type$prototype = type.prototype) !== null && _type$prototype !== void 0 && _type$prototype.render) && type.$$typeof !== ForwardRef) {\n return false;\n }\n\n // Class component\n if (typeof nodeOrComponent === 'function' && !((_nodeOrComponent$prot = nodeOrComponent.prototype) !== null && _nodeOrComponent$prot !== void 0 && _nodeOrComponent$prot.render) && nodeOrComponent.$$typeof !== ForwardRef) {\n return false;\n }\n return true;\n};\nfunction isReactElement(node) {\n return /*#__PURE__*/isValidElement(node) && !isFragment(node);\n}\nexport var supportNodeRef = function supportNodeRef(node) {\n return isReactElement(node) && supportRef(node);\n};\n\n/**\n * In React 19. `ref` is not a property from node.\n * But a property from `props.ref`.\n * To check if `props.ref` exist or fallback to `ref`.\n */\nexport var getNodeRef = Number(version.split('.')[0]) >= 19 ?\n// >= React 19\nfunction (node) {\n if (isReactElement(node)) {\n return node.props.ref;\n }\n return null;\n} :\n// < React 19\nfunction (node) {\n if (isReactElement(node)) {\n return node.ref;\n }\n return null;\n};","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport get from \"./get\";\nfunction internalSet(entity, paths, value, removeIfUndefined) {\n if (!paths.length) {\n return value;\n }\n var _paths = _toArray(paths),\n path = _paths[0],\n restPath = _paths.slice(1);\n var clone;\n if (!entity && typeof path === 'number') {\n clone = [];\n } else if (Array.isArray(entity)) {\n clone = _toConsumableArray(entity);\n } else {\n clone = _objectSpread({}, entity);\n }\n\n // Delete prop if `removeIfUndefined` and value is undefined\n if (removeIfUndefined && value === undefined && restPath.length === 1) {\n delete clone[path][restPath[0]];\n } else {\n clone[path] = internalSet(clone[path], restPath, value, removeIfUndefined);\n }\n return clone;\n}\nexport default function set(entity, paths, value) {\n var removeIfUndefined = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n // Do nothing if `removeIfUndefined` and parent object not exist\n if (paths.length && removeIfUndefined && value === undefined && !get(entity, paths.slice(0, -1))) {\n return entity;\n }\n return internalSet(entity, paths, value, removeIfUndefined);\n}\nfunction isObject(obj) {\n return _typeof(obj) === 'object' && obj !== null && Object.getPrototypeOf(obj) === Object.prototype;\n}\nfunction createEmpty(source) {\n return Array.isArray(source) ? [] : {};\n}\nvar keys = typeof Reflect === 'undefined' ? Object.keys : Reflect.ownKeys;\n\n/**\n * Merge objects which will create\n */\nexport function merge() {\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n var clone = createEmpty(sources[0]);\n sources.forEach(function (src) {\n function internalMerge(path, parentLoopSet) {\n var loopSet = new Set(parentLoopSet);\n var value = get(src, path);\n var isArr = Array.isArray(value);\n if (isArr || isObject(value)) {\n // Only add not loop obj\n if (!loopSet.has(value)) {\n loopSet.add(value);\n var originValue = get(clone, path);\n if (isArr) {\n // Array will always be override\n clone = set(clone, path, []);\n } else if (!originValue || _typeof(originValue) !== 'object') {\n // Init container if not exist\n clone = set(clone, path, createEmpty(value));\n }\n keys(value).forEach(function (key) {\n internalMerge([].concat(_toConsumableArray(path), [key]), loopSet);\n });\n }\n } else {\n clone = set(clone, path, value);\n }\n }\n internalMerge([]);\n });\n return clone;\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useEvent } from 'rc-util';\nimport * as React from 'react';\nfunction getPosition(e) {\n var obj = 'touches' in e ? e.touches[0] : e;\n return {\n pageX: obj.pageX,\n pageY: obj.pageY\n };\n}\nfunction useDrag(containerRef, direction, rawValues, min, max, formatValue, triggerChange, finishChange, offsetValues) {\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n draggingValue = _React$useState2[0],\n setDraggingValue = _React$useState2[1];\n var _React$useState3 = React.useState(-1),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n draggingIndex = _React$useState4[0],\n setDraggingIndex = _React$useState4[1];\n var _React$useState5 = React.useState(rawValues),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n cacheValues = _React$useState6[0],\n setCacheValues = _React$useState6[1];\n var _React$useState7 = React.useState(rawValues),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n originValues = _React$useState8[0],\n setOriginValues = _React$useState8[1];\n var mouseMoveEventRef = React.useRef(null);\n var mouseUpEventRef = React.useRef(null);\n React.useLayoutEffect(function () {\n if (draggingIndex === -1) {\n setCacheValues(rawValues);\n }\n }, [rawValues, draggingIndex]);\n\n // Clean up event\n React.useEffect(function () {\n return function () {\n document.removeEventListener('mousemove', mouseMoveEventRef.current);\n document.removeEventListener('mouseup', mouseUpEventRef.current);\n document.removeEventListener('touchmove', mouseMoveEventRef.current);\n document.removeEventListener('touchend', mouseUpEventRef.current);\n };\n }, []);\n var flushValues = function flushValues(nextValues, nextValue) {\n // Perf: Only update state when value changed\n if (cacheValues.some(function (val, i) {\n return val !== nextValues[i];\n })) {\n if (nextValue !== undefined) {\n setDraggingValue(nextValue);\n }\n setCacheValues(nextValues);\n triggerChange(nextValues);\n }\n };\n var updateCacheValue = useEvent(function (valueIndex, offsetPercent) {\n // Basic point offset\n\n if (valueIndex === -1) {\n // >>>> Dragging on the track\n var startValue = originValues[0];\n var endValue = originValues[originValues.length - 1];\n var maxStartOffset = min - startValue;\n var maxEndOffset = max - endValue;\n\n // Get valid offset\n var offset = offsetPercent * (max - min);\n offset = Math.max(offset, maxStartOffset);\n offset = Math.min(offset, maxEndOffset);\n\n // Use first value to revert back of valid offset (like steps marks)\n var formatStartValue = formatValue(startValue + offset);\n offset = formatStartValue - startValue;\n var cloneCacheValues = originValues.map(function (val) {\n return val + offset;\n });\n flushValues(cloneCacheValues);\n } else {\n // >>>> Dragging on the handle\n var offsetDist = (max - min) * offsetPercent;\n\n // Always start with the valueIndex origin value\n var cloneValues = _toConsumableArray(cacheValues);\n cloneValues[valueIndex] = originValues[valueIndex];\n var next = offsetValues(cloneValues, offsetDist, valueIndex, 'dist');\n flushValues(next.values, next.value);\n }\n });\n var onStartMove = function onStartMove(e, valueIndex, startValues) {\n e.stopPropagation();\n\n // 如果是点击 track 触å‘的,需è¦ä¼ å…¥å˜åŒ–åŽçš„åˆå§‹å€¼ï¼Œè€Œä¸èƒ½ç›´æŽ¥ç”¨ rawValues\n var initialValues = startValues || rawValues;\n var originValue = initialValues[valueIndex];\n setDraggingIndex(valueIndex);\n setDraggingValue(originValue);\n setOriginValues(initialValues);\n var _getPosition = getPosition(e),\n startX = _getPosition.pageX,\n startY = _getPosition.pageY;\n\n // Moving\n var onMouseMove = function onMouseMove(event) {\n event.preventDefault();\n var _getPosition2 = getPosition(event),\n moveX = _getPosition2.pageX,\n moveY = _getPosition2.pageY;\n var offsetX = moveX - startX;\n var offsetY = moveY - startY;\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n width = _containerRef$current.width,\n height = _containerRef$current.height;\n var offSetPercent;\n switch (direction) {\n case 'btt':\n offSetPercent = -offsetY / height;\n break;\n case 'ttb':\n offSetPercent = offsetY / height;\n break;\n case 'rtl':\n offSetPercent = -offsetX / width;\n break;\n default:\n offSetPercent = offsetX / width;\n }\n updateCacheValue(valueIndex, offSetPercent);\n };\n\n // End\n var onMouseUp = function onMouseUp(event) {\n event.preventDefault();\n document.removeEventListener('mouseup', onMouseUp);\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('touchend', onMouseUp);\n document.removeEventListener('touchmove', onMouseMove);\n mouseMoveEventRef.current = null;\n mouseUpEventRef.current = null;\n setDraggingIndex(-1);\n finishChange();\n };\n document.addEventListener('mouseup', onMouseUp);\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('touchend', onMouseUp);\n document.addEventListener('touchmove', onMouseMove);\n mouseMoveEventRef.current = onMouseMove;\n mouseUpEventRef.current = onMouseUp;\n };\n\n // Only return cache value when it mapping with rawValues\n var returnValues = React.useMemo(function () {\n var sourceValues = _toConsumableArray(rawValues).sort(function (a, b) {\n return a - b;\n });\n var targetValues = _toConsumableArray(cacheValues).sort(function (a, b) {\n return a - b;\n });\n return sourceValues.every(function (val, index) {\n return val === targetValues[index];\n }) ? cacheValues : rawValues;\n }, [rawValues, cacheValues]);\n return [draggingIndex, draggingValue, returnValues, onStartMove];\n}\nexport default useDrag;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport cls from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport Handles from \"./Handles\";\nimport Marks from \"./Marks\";\nimport Steps from \"./Steps\";\nimport Tracks from \"./Tracks\";\nimport SliderContext from \"./context\";\nimport useDrag from \"./hooks/useDrag\";\nimport useOffset from \"./hooks/useOffset\";\n\n/**\n * New:\n * - click mark to update range value\n * - handleRender\n * - Fix handle with count not correct\n * - Fix pushable not work in some case\n * - No more FindDOMNode\n * - Move all position related style into inline style\n * - Key: up is plus, down is minus\n * - fix Key with step = null not align with marks\n * - Change range should not trigger onChange\n * - keyboard support pushable\n */\n\nvar Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-slider' : _props$prefixCls,\n className = props.className,\n style = props.style,\n classNames = props.classNames,\n styles = props.styles,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$keyboard = props.keyboard,\n keyboard = _props$keyboard === void 0 ? true : _props$keyboard,\n autoFocus = props.autoFocus,\n onFocus = props.onFocus,\n onBlur = props.onBlur,\n _props$min = props.min,\n min = _props$min === void 0 ? 0 : _props$min,\n _props$max = props.max,\n max = _props$max === void 0 ? 100 : _props$max,\n _props$step = props.step,\n step = _props$step === void 0 ? 1 : _props$step,\n value = props.value,\n defaultValue = props.defaultValue,\n range = props.range,\n count = props.count,\n onChange = props.onChange,\n onBeforeChange = props.onBeforeChange,\n onAfterChange = props.onAfterChange,\n onChangeComplete = props.onChangeComplete,\n _props$allowCross = props.allowCross,\n allowCross = _props$allowCross === void 0 ? true : _props$allowCross,\n _props$pushable = props.pushable,\n pushable = _props$pushable === void 0 ? false : _props$pushable,\n draggableTrack = props.draggableTrack,\n reverse = props.reverse,\n vertical = props.vertical,\n _props$included = props.included,\n included = _props$included === void 0 ? true : _props$included,\n startPoint = props.startPoint,\n trackStyle = props.trackStyle,\n handleStyle = props.handleStyle,\n railStyle = props.railStyle,\n dotStyle = props.dotStyle,\n activeDotStyle = props.activeDotStyle,\n marks = props.marks,\n dots = props.dots,\n handleRender = props.handleRender,\n activeHandleRender = props.activeHandleRender,\n _props$tabIndex = props.tabIndex,\n tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n ariaLabelForHandle = props.ariaLabelForHandle,\n ariaLabelledByForHandle = props.ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle = props.ariaValueTextFormatterForHandle;\n var handlesRef = React.useRef(null);\n var containerRef = React.useRef(null);\n var direction = React.useMemo(function () {\n if (vertical) {\n return reverse ? 'ttb' : 'btt';\n }\n return reverse ? 'rtl' : 'ltr';\n }, [reverse, vertical]);\n\n // ============================ Range =============================\n var mergedMin = React.useMemo(function () {\n return isFinite(min) ? min : 0;\n }, [min]);\n var mergedMax = React.useMemo(function () {\n return isFinite(max) ? max : 100;\n }, [max]);\n\n // ============================= Step =============================\n var mergedStep = React.useMemo(function () {\n return step !== null && step <= 0 ? 1 : step;\n }, [step]);\n\n // ============================= Push =============================\n var mergedPush = React.useMemo(function () {\n if (typeof pushable === 'boolean') {\n return pushable ? mergedStep : false;\n }\n return pushable >= 0 ? pushable : false;\n }, [pushable, mergedStep]);\n\n // ============================ Marks =============================\n var markList = React.useMemo(function () {\n return Object.keys(marks || {}).map(function (key) {\n var mark = marks[key];\n var markObj = {\n value: Number(key)\n };\n if (mark && _typeof(mark) === 'object' && ! /*#__PURE__*/React.isValidElement(mark) && ('label' in mark || 'style' in mark)) {\n markObj.style = mark.style;\n markObj.label = mark.label;\n } else {\n markObj.label = mark;\n }\n return markObj;\n }).filter(function (_ref) {\n var label = _ref.label;\n return label || typeof label === 'number';\n }).sort(function (a, b) {\n return a.value - b.value;\n });\n }, [marks]);\n\n // ============================ Format ============================\n var _useOffset = useOffset(mergedMin, mergedMax, mergedStep, markList, allowCross, mergedPush),\n _useOffset2 = _slicedToArray(_useOffset, 2),\n formatValue = _useOffset2[0],\n offsetValues = _useOffset2[1];\n\n // ============================ Values ============================\n var _useMergedState = useMergedState(defaultValue, {\n value: value\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedValue = _useMergedState2[0],\n setValue = _useMergedState2[1];\n var rawValues = React.useMemo(function () {\n var valueList = mergedValue === null || mergedValue === undefined ? [] : Array.isArray(mergedValue) ? mergedValue : [mergedValue];\n var _valueList = _slicedToArray(valueList, 1),\n _valueList$ = _valueList[0],\n val0 = _valueList$ === void 0 ? mergedMin : _valueList$;\n var returnValues = mergedValue === null ? [] : [val0];\n\n // Format as range\n if (range) {\n returnValues = _toConsumableArray(valueList);\n\n // When count provided or value is `undefined`, we fill values\n if (count || mergedValue === undefined) {\n var pointCount = count >= 0 ? count + 1 : 2;\n returnValues = returnValues.slice(0, pointCount);\n\n // Fill with count\n while (returnValues.length < pointCount) {\n var _returnValues;\n returnValues.push((_returnValues = returnValues[returnValues.length - 1]) !== null && _returnValues !== void 0 ? _returnValues : mergedMin);\n }\n }\n returnValues.sort(function (a, b) {\n return a - b;\n });\n }\n\n // Align in range\n returnValues.forEach(function (val, index) {\n returnValues[index] = formatValue(val);\n });\n return returnValues;\n }, [mergedValue, range, mergedMin, count, formatValue]);\n\n // =========================== onChange ===========================\n var rawValuesRef = React.useRef(rawValues);\n rawValuesRef.current = rawValues;\n var getTriggerValue = function getTriggerValue(triggerValues) {\n return range ? triggerValues : triggerValues[0];\n };\n var triggerChange = function triggerChange(nextValues) {\n // Order first\n var cloneNextValues = _toConsumableArray(nextValues).sort(function (a, b) {\n return a - b;\n });\n\n // Trigger event if needed\n if (onChange && !isEqual(cloneNextValues, rawValuesRef.current, true)) {\n onChange(getTriggerValue(cloneNextValues));\n }\n\n // We set this later since it will re-render component immediately\n setValue(cloneNextValues);\n };\n var finishChange = function finishChange() {\n var finishValue = getTriggerValue(rawValuesRef.current);\n onAfterChange === null || onAfterChange === void 0 || onAfterChange(finishValue);\n warning(!onAfterChange, '[rc-slider] `onAfterChange` is deprecated. Please use `onChangeComplete` instead.');\n onChangeComplete === null || onChangeComplete === void 0 || onChangeComplete(finishValue);\n };\n var _useDrag = useDrag(containerRef, direction, rawValues, mergedMin, mergedMax, formatValue, triggerChange, finishChange, offsetValues),\n _useDrag2 = _slicedToArray(_useDrag, 4),\n draggingIndex = _useDrag2[0],\n draggingValue = _useDrag2[1],\n cacheValues = _useDrag2[2],\n onStartDrag = _useDrag2[3];\n var changeToCloseValue = function changeToCloseValue(newValue, e) {\n if (!disabled) {\n var valueIndex = 0;\n var valueDist = mergedMax - mergedMin;\n rawValues.forEach(function (val, index) {\n var dist = Math.abs(newValue - val);\n if (dist <= valueDist) {\n valueDist = dist;\n valueIndex = index;\n }\n });\n\n // Create new values\n var cloneNextValues = _toConsumableArray(rawValues);\n cloneNextValues[valueIndex] = newValue;\n\n // Fill value to match default 2\n if (range && !rawValues.length && count === undefined) {\n cloneNextValues.push(newValue);\n }\n onBeforeChange === null || onBeforeChange === void 0 || onBeforeChange(getTriggerValue(cloneNextValues));\n triggerChange(cloneNextValues);\n if (e) {\n var _document$activeEleme, _document$activeEleme2;\n (_document$activeEleme = document.activeElement) === null || _document$activeEleme === void 0 || (_document$activeEleme2 = _document$activeEleme.blur) === null || _document$activeEleme2 === void 0 || _document$activeEleme2.call(_document$activeEleme);\n handlesRef.current.focus(valueIndex);\n onStartDrag(e, valueIndex, cloneNextValues);\n }\n }\n };\n\n // ============================ Click =============================\n var onSliderMouseDown = function onSliderMouseDown(e) {\n e.preventDefault();\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n width = _containerRef$current.width,\n height = _containerRef$current.height,\n left = _containerRef$current.left,\n top = _containerRef$current.top,\n bottom = _containerRef$current.bottom,\n right = _containerRef$current.right;\n var clientX = e.clientX,\n clientY = e.clientY;\n var percent;\n switch (direction) {\n case 'btt':\n percent = (bottom - clientY) / height;\n break;\n case 'ttb':\n percent = (clientY - top) / height;\n break;\n case 'rtl':\n percent = (right - clientX) / width;\n break;\n default:\n percent = (clientX - left) / width;\n }\n var nextValue = mergedMin + percent * (mergedMax - mergedMin);\n changeToCloseValue(formatValue(nextValue), e);\n };\n\n // =========================== Keyboard ===========================\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n keyboardValue = _React$useState2[0],\n setKeyboardValue = _React$useState2[1];\n var onHandleOffsetChange = function onHandleOffsetChange(offset, valueIndex) {\n if (!disabled) {\n var next = offsetValues(rawValues, offset, valueIndex);\n onBeforeChange === null || onBeforeChange === void 0 || onBeforeChange(getTriggerValue(rawValues));\n triggerChange(next.values);\n setKeyboardValue(next.value);\n }\n };\n React.useEffect(function () {\n if (keyboardValue !== null) {\n var valueIndex = rawValues.indexOf(keyboardValue);\n if (valueIndex >= 0) {\n handlesRef.current.focus(valueIndex);\n }\n }\n setKeyboardValue(null);\n }, [keyboardValue]);\n\n // ============================= Drag =============================\n var mergedDraggableTrack = React.useMemo(function () {\n if (draggableTrack && mergedStep === null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(false, '`draggableTrack` is not supported when `step` is `null`.');\n }\n return false;\n }\n return draggableTrack;\n }, [draggableTrack, mergedStep]);\n var onStartMove = function onStartMove(e, valueIndex) {\n onStartDrag(e, valueIndex);\n onBeforeChange === null || onBeforeChange === void 0 || onBeforeChange(getTriggerValue(rawValuesRef.current));\n };\n\n // Auto focus for updated handle\n var dragging = draggingIndex !== -1;\n React.useEffect(function () {\n if (!dragging) {\n var valueIndex = rawValues.lastIndexOf(draggingValue);\n handlesRef.current.focus(valueIndex);\n }\n }, [dragging]);\n\n // =========================== Included ===========================\n var sortedCacheValues = React.useMemo(function () {\n return _toConsumableArray(cacheValues).sort(function (a, b) {\n return a - b;\n });\n }, [cacheValues]);\n\n // Provide a range values with included [min, max]\n // Used for Track, Mark & Dot\n var _React$useMemo = React.useMemo(function () {\n if (!range) {\n return [mergedMin, sortedCacheValues[0]];\n }\n return [sortedCacheValues[0], sortedCacheValues[sortedCacheValues.length - 1]];\n }, [sortedCacheValues, range, mergedMin]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n includedStart = _React$useMemo2[0],\n includedEnd = _React$useMemo2[1];\n\n // ============================= Refs =============================\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n handlesRef.current.focus(0);\n },\n blur: function blur() {\n var _containerRef$current2;\n var _document = document,\n activeElement = _document.activeElement;\n if ((_containerRef$current2 = containerRef.current) !== null && _containerRef$current2 !== void 0 && _containerRef$current2.contains(activeElement)) {\n activeElement === null || activeElement === void 0 || activeElement.blur();\n }\n }\n };\n });\n\n // ========================== Auto Focus ==========================\n React.useEffect(function () {\n if (autoFocus) {\n handlesRef.current.focus(0);\n }\n }, []);\n\n // =========================== Context ============================\n var context = React.useMemo(function () {\n return {\n min: mergedMin,\n max: mergedMax,\n direction: direction,\n disabled: disabled,\n keyboard: keyboard,\n step: mergedStep,\n included: included,\n includedStart: includedStart,\n includedEnd: includedEnd,\n range: range,\n tabIndex: tabIndex,\n ariaLabelForHandle: ariaLabelForHandle,\n ariaLabelledByForHandle: ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle: ariaValueTextFormatterForHandle,\n styles: styles || {},\n classNames: classNames || {}\n };\n }, [mergedMin, mergedMax, direction, disabled, keyboard, mergedStep, included, includedStart, includedEnd, range, tabIndex, ariaLabelForHandle, ariaLabelledByForHandle, ariaValueTextFormatterForHandle, styles, classNames]);\n\n // ============================ Render ============================\n return /*#__PURE__*/React.createElement(SliderContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: containerRef,\n className: cls(prefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), \"\".concat(prefixCls, \"-vertical\"), vertical), \"\".concat(prefixCls, \"-horizontal\"), !vertical), \"\".concat(prefixCls, \"-with-marks\"), markList.length)),\n style: style,\n onMouseDown: onSliderMouseDown\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: cls(\"\".concat(prefixCls, \"-rail\"), classNames === null || classNames === void 0 ? void 0 : classNames.rail),\n style: _objectSpread(_objectSpread({}, railStyle), styles === null || styles === void 0 ? void 0 : styles.rail)\n }), /*#__PURE__*/React.createElement(Tracks, {\n prefixCls: prefixCls,\n style: trackStyle,\n values: sortedCacheValues,\n startPoint: startPoint,\n onStartMove: mergedDraggableTrack ? onStartMove : undefined\n }), /*#__PURE__*/React.createElement(Steps, {\n prefixCls: prefixCls,\n marks: markList,\n dots: dots,\n style: dotStyle,\n activeStyle: activeDotStyle\n }), /*#__PURE__*/React.createElement(Handles, {\n ref: handlesRef,\n prefixCls: prefixCls,\n style: handleStyle,\n values: cacheValues,\n draggingIndex: draggingIndex,\n onStartMove: onStartMove,\n onOffsetChange: onHandleOffsetChange,\n onFocus: onFocus,\n onBlur: onBlur,\n handleRender: handleRender,\n activeHandleRender: activeHandleRender,\n onChangeComplete: finishChange\n }), /*#__PURE__*/React.createElement(Marks, {\n prefixCls: prefixCls,\n marks: markList,\n onClick: changeToCloseValue\n })));\n});\nif (process.env.NODE_ENV !== 'production') {\n Slider.displayName = 'Slider';\n}\nexport default Slider;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\n\n/** Format the value in the range of [min, max] */\n\n/** Format value align with step */\n\n/** Format value align with step & marks */\n\nexport default function useOffset(min, max, step, markList, allowCross, pushable) {\n var formatRangeValue = React.useCallback(function (val) {\n return Math.max(min, Math.min(max, val));\n }, [min, max]);\n var formatStepValue = React.useCallback(function (val) {\n if (step !== null) {\n var stepValue = min + Math.round((formatRangeValue(val) - min) / step) * step;\n\n // Cut number in case to be like 0.30000000000000004\n var getDecimal = function getDecimal(num) {\n return (String(num).split('.')[1] || '').length;\n };\n var maxDecimal = Math.max(getDecimal(step), getDecimal(max), getDecimal(min));\n var fixedValue = Number(stepValue.toFixed(maxDecimal));\n return min <= fixedValue && fixedValue <= max ? fixedValue : null;\n }\n return null;\n }, [step, min, max, formatRangeValue]);\n var formatValue = React.useCallback(function (val) {\n var formatNextValue = formatRangeValue(val);\n\n // List align values\n var alignValues = markList.map(function (mark) {\n return mark.value;\n });\n if (step !== null) {\n alignValues.push(formatStepValue(val));\n }\n\n // min & max\n alignValues.push(min, max);\n\n // Align with marks\n var closeValue = alignValues[0];\n var closeDist = max - min;\n alignValues.forEach(function (alignValue) {\n var dist = Math.abs(formatNextValue - alignValue);\n if (dist <= closeDist) {\n closeValue = alignValue;\n closeDist = dist;\n }\n });\n return closeValue;\n }, [min, max, markList, step, formatRangeValue, formatStepValue]);\n\n // ========================== Offset ==========================\n // Single Value\n var offsetValue = function offsetValue(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n if (typeof offset === 'number') {\n var nextValue;\n var originValue = values[valueIndex];\n\n // Only used for `dist` mode\n var targetDistValue = originValue + offset;\n\n // Compare next step value & mark value which is best match\n var potentialValues = [];\n markList.forEach(function (mark) {\n potentialValues.push(mark.value);\n });\n\n // Min & Max\n potentialValues.push(min, max);\n\n // In case origin value is align with mark but not with step\n potentialValues.push(formatStepValue(originValue));\n\n // Put offset step value also\n var sign = offset > 0 ? 1 : -1;\n if (mode === 'unit') {\n potentialValues.push(formatStepValue(originValue + sign * step));\n } else {\n potentialValues.push(formatStepValue(targetDistValue));\n }\n\n // Find close one\n potentialValues = potentialValues.filter(function (val) {\n return val !== null;\n })\n // Remove reverse value\n .filter(function (val) {\n return offset < 0 ? val <= originValue : val >= originValue;\n });\n if (mode === 'unit') {\n // `unit` mode can not contain itself\n potentialValues = potentialValues.filter(function (val) {\n return val !== originValue;\n });\n }\n var compareValue = mode === 'unit' ? originValue : targetDistValue;\n nextValue = potentialValues[0];\n var valueDist = Math.abs(nextValue - compareValue);\n potentialValues.forEach(function (potentialValue) {\n var dist = Math.abs(potentialValue - compareValue);\n if (dist < valueDist) {\n nextValue = potentialValue;\n valueDist = dist;\n }\n });\n\n // Out of range will back to range\n if (nextValue === undefined) {\n return offset < 0 ? min : max;\n }\n\n // `dist` mode\n if (mode === 'dist') {\n return nextValue;\n }\n\n // `unit` mode may need another round\n if (Math.abs(offset) > 1) {\n var cloneValues = _toConsumableArray(values);\n cloneValues[valueIndex] = nextValue;\n return offsetValue(cloneValues, offset - sign, valueIndex, mode);\n }\n return nextValue;\n } else if (offset === 'min') {\n return min;\n } else if (offset === 'max') {\n return max;\n }\n };\n\n /** Same as `offsetValue` but return `changed` mark to tell value changed */\n var offsetChangedValue = function offsetChangedValue(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n var originValue = values[valueIndex];\n var nextValue = offsetValue(values, offset, valueIndex, mode);\n return {\n value: nextValue,\n changed: nextValue !== originValue\n };\n };\n var needPush = function needPush(dist) {\n return pushable === null && dist === 0 || typeof pushable === 'number' && dist < pushable;\n };\n\n // Values\n var offsetValues = function offsetValues(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n var nextValues = values.map(formatValue);\n var originValue = nextValues[valueIndex];\n var nextValue = offsetValue(nextValues, offset, valueIndex, mode);\n nextValues[valueIndex] = nextValue;\n if (allowCross === false) {\n // >>>>> Allow Cross\n var pushNum = pushable || 0;\n\n // ============ AllowCross ===============\n if (valueIndex > 0 && nextValues[valueIndex - 1] !== originValue) {\n nextValues[valueIndex] = Math.max(nextValues[valueIndex], nextValues[valueIndex - 1] + pushNum);\n }\n if (valueIndex < nextValues.length - 1 && nextValues[valueIndex + 1] !== originValue) {\n nextValues[valueIndex] = Math.min(nextValues[valueIndex], nextValues[valueIndex + 1] - pushNum);\n }\n } else if (typeof pushable === 'number' || pushable === null) {\n // >>>>> Pushable\n // =============== Push ==================\n\n // >>>>>> Basic push\n // End values\n for (var i = valueIndex + 1; i < nextValues.length; i += 1) {\n var changed = true;\n while (needPush(nextValues[i] - nextValues[i - 1]) && changed) {\n var _offsetChangedValue = offsetChangedValue(nextValues, 1, i);\n nextValues[i] = _offsetChangedValue.value;\n changed = _offsetChangedValue.changed;\n }\n }\n\n // Start values\n for (var _i = valueIndex; _i > 0; _i -= 1) {\n var _changed = true;\n while (needPush(nextValues[_i] - nextValues[_i - 1]) && _changed) {\n var _offsetChangedValue2 = offsetChangedValue(nextValues, -1, _i - 1);\n nextValues[_i - 1] = _offsetChangedValue2.value;\n _changed = _offsetChangedValue2.changed;\n }\n }\n\n // >>>>> Revert back to safe push range\n // End to Start\n for (var _i2 = nextValues.length - 1; _i2 > 0; _i2 -= 1) {\n var _changed2 = true;\n while (needPush(nextValues[_i2] - nextValues[_i2 - 1]) && _changed2) {\n var _offsetChangedValue3 = offsetChangedValue(nextValues, -1, _i2 - 1);\n nextValues[_i2 - 1] = _offsetChangedValue3.value;\n _changed2 = _offsetChangedValue3.changed;\n }\n }\n\n // Start to End\n for (var _i3 = 0; _i3 < nextValues.length - 1; _i3 += 1) {\n var _changed3 = true;\n while (needPush(nextValues[_i3 + 1] - nextValues[_i3]) && _changed3) {\n var _offsetChangedValue4 = offsetChangedValue(nextValues, 1, _i3 + 1);\n nextValues[_i3 + 1] = _offsetChangedValue4.value;\n _changed3 = _offsetChangedValue4.changed;\n }\n }\n }\n return {\n value: nextValues[valueIndex],\n values: nextValues\n };\n };\n return [formatValue, offsetValues];\n}","import Slider from \"./Slider\";\nexport default Slider;","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SHARE_SITES = void 0;\nvar SHARE_SITES = {\n GOOGLE: 'Google',\n ICAL: 'iCal',\n OUTLOOK: 'Outlook',\n YAHOO: 'Yahoo'\n};\nexports.SHARE_SITES = SHARE_SITES;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = AddToCalendar;\nObject.defineProperty(exports, \"SHARE_SITES\", {\n enumerable: true,\n get: function get() {\n return _enums.SHARE_SITES;\n }\n});\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _enums = require(\"./enums\");\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction AddToCalendar(WrappedButton, WrappedDropdown) {\n var _class, _temp2;\n\n return _temp2 = _class =\n /*#__PURE__*/\n function (_Component) {\n _inherits(AddToCalendarWrapped, _Component);\n\n function AddToCalendarWrapped() {\n var _getPrototypeOf2;\n\n var _temp, _this;\n\n _classCallCheck(this, AddToCalendarWrapped);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _possibleConstructorReturn(_this, (_temp = _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(AddToCalendarWrapped)).call.apply(_getPrototypeOf2, [this].concat(args))), _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n dropdownOpen: false\n }), _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleCalendarButtonClick\", function (e) {\n var filename = _this.props.filename;\n e.preventDefault();\n var url = e.currentTarget.getAttribute('href');\n\n if (url.startsWith('BEGIN')) {\n var blob = new Blob([url], {\n type: 'text/calendar;charset=utf-8'\n });\n\n if ((0, _utils.isInternetExplorer)()) {\n window.navigator.msSaveOrOpenBlob(blob, \"\".concat(filename, \".ics\"));\n } else {\n var link = document.createElement('a');\n link.href = window.URL.createObjectURL(blob);\n link.setAttribute('download', \"\".concat(filename, \".ics\"));\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n } else {\n window.open(url, '_blank');\n }\n }), _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleDropdownToggle\", function (e) {\n e.preventDefault();\n\n _this.setState(function (prevState) {\n return {\n dropdownOpen: !prevState.dropdownOpen\n };\n });\n }), _temp));\n }\n\n _createClass(AddToCalendarWrapped, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n buttonProps = _this$props.buttonProps,\n buttonText = _this$props.buttonText,\n className = _this$props.className,\n dropdownProps = _this$props.dropdownProps,\n event = _this$props.event,\n items = _this$props.items,\n linkProps = _this$props.linkProps;\n return _react.default.createElement(\"div\", {\n className: className\n }, _react.default.createElement(WrappedButton, _extends({}, buttonProps, {\n onClick: this.handleDropdownToggle\n }), buttonText), this.state.dropdownOpen && _react.default.createElement(WrappedDropdown, _extends({}, dropdownProps, {\n isOpen: this.state.dropdownOpen,\n onRequestClose: this.handleDropdownToggle\n }), items.map(function (item) {\n return _react.default.createElement(\"a\", _extends({}, linkProps, {\n key: item,\n onClick: _this2.handleCalendarButtonClick,\n href: (0, _utils.buildShareUrl)(event, item)\n }), item);\n })));\n }\n }]);\n\n return AddToCalendarWrapped;\n }(_react.Component), _defineProperty(_class, \"propTypes\", {\n buttonProps: _propTypes.default.shape(),\n buttonText: _propTypes.default.node,\n className: _propTypes.default.string,\n dropdownProps: _propTypes.default.shape(),\n event: _propTypes.default.shape({\n description: _propTypes.default.string,\n duration: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired,\n endDatetime: _propTypes.default.string.isRequired,\n location: _propTypes.default.string,\n startDatetime: _propTypes.default.string.isRequired,\n title: _propTypes.default.string\n }).isRequired,\n filename: _propTypes.default.string,\n items: _propTypes.default.arrayOf(_propTypes.default.oneOf(Object.keys(_enums.SHARE_SITES).map(function (itm) {\n return _enums.SHARE_SITES[itm];\n }))),\n linkProps: _propTypes.default.shape()\n }), _defineProperty(_class, \"defaultProps\", {\n buttonProps: {},\n buttonText: 'Add to Calendar',\n className: null,\n dropdownProps: {},\n filename: 'download',\n items: Object.keys(_enums.SHARE_SITES).map(function (itm) {\n return _enums.SHARE_SITES[itm];\n }),\n linkProps: {}\n }), _temp2;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.buildShareUrl = exports.escapeICSDescription = exports.isInternetExplorer = exports.isMobile = exports.formatDuration = exports.formatDate = void 0;\n\nvar _enums = require(\"./enums\");\n\n/**\n * Converts Date String with UTC timezone to date consumable by calendar\n * apps. Changes +00:00 to Z.\n * @param {string} Date in YYYYMMDDTHHmmssZ format\n * @returns {string} Date with +00:00 replaceed with Z\n */\nvar formatDate = function formatDate(date) {\n return date && date.replace('+00:00', 'Z');\n};\n\nexports.formatDate = formatDate;\n\nvar formatDuration = function formatDuration(duration) {\n if (typeof duration === 'string') return duration;\n var parts = duration.toString().split('.');\n\n if (parts.length < 2) {\n parts.push('00');\n }\n\n return parts.map(function (part) {\n return part.length === 2 ? part : \"0\".concat(part);\n }).join('');\n};\n/**\n * Tests provided UserAgent against Known Mobile User Agents\n * @returns {bool} isMobileDevice\n */\n\n\nexports.formatDuration = formatDuration;\n\nvar isMobile = function isMobile() {\n return /Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile/.test(window.navigator.userAgent || window.navigator.vendor || window.opera);\n};\n/**\n * Tests userAgent to see if browser is IE\n * @returns {bool} isInternetExplorer\n */\n\n\nexports.isMobile = isMobile;\n\nvar isInternetExplorer = function isInternetExplorer() {\n return /MSIE/.test(window.navigator.userAgent) || /Trident/.test(window.navigator.userAgent);\n};\n\nexports.isInternetExplorer = isInternetExplorer;\n\nvar escapeICSDescription = function escapeICSDescription(description) {\n return description.replace(/(\\r?\\n|<br ?\\/?>)/g, '\\\\n');\n};\n/**\n * Takes an event object and returns a Google Calendar Event URL\n * @param {string} event.description\n * @param {string} event.endDatetime\n * @param {string} event.location\n * @param {string} event.startDatetime\n * @param {string} event.title\n * @returns {string} Google Calendar Event URL\n */\n\n\nexports.escapeICSDescription = escapeICSDescription;\n\nvar googleShareUrl = function googleShareUrl(_ref) {\n var description = _ref.description,\n endDatetime = _ref.endDatetime,\n location = _ref.location,\n startDatetime = _ref.startDatetime,\n timezone = _ref.timezone,\n title = _ref.title;\n return \"https://calendar.google.com/calendar/render?action=TEMPLATE&dates=\".concat(startDatetime, \"/\").concat(endDatetime).concat(timezone && \"&ctz=\".concat(timezone), \"&location=\").concat(location, \"&text=\").concat(title, \"&details=\").concat(description);\n};\n/**\n * Takes an event object and returns a Yahoo Calendar Event URL\n * @param {string} event.description\n * @param {string} event.duration\n * @param {string} event.location\n * @param {string} event.startDatetime\n * @param {string} event.title\n * @returns {string} Yahoo Calendar Event URL\n */\n\n\nvar yahooShareUrl = function yahooShareUrl(_ref2) {\n var description = _ref2.description,\n duration = _ref2.duration,\n location = _ref2.location,\n startDatetime = _ref2.startDatetime,\n title = _ref2.title;\n return \"https://calendar.yahoo.com/?v=60&view=d&type=20&title=\".concat(title, \"&st=\").concat(startDatetime, \"&dur=\").concat(duration, \"&desc=\").concat(description, \"&in_loc=\").concat(location);\n};\n/**\n * Takes an event object and returns an array to be downloaded as ics file\n * @param {string} event.description\n * @param {string} event.endDatetime\n * @param {string} event.location\n * @param {string} event.startDatetime\n * @param {string} event.title\n * @returns {array} ICS Content\n */\n\n\nvar buildShareFile = function buildShareFile(_ref3) {\n var _ref3$description = _ref3.description,\n description = _ref3$description === void 0 ? '' : _ref3$description,\n _ref3$ctz = _ref3.ctz,\n ctz = _ref3$ctz === void 0 ? '' : _ref3$ctz,\n endDatetime = _ref3.endDatetime,\n _ref3$location = _ref3.location,\n location = _ref3$location === void 0 ? '' : _ref3$location,\n startDatetime = _ref3.startDatetime,\n _ref3$timezone = _ref3.timezone,\n timezone = _ref3$timezone === void 0 ? '' : _ref3$timezone,\n _ref3$title = _ref3.title,\n title = _ref3$title === void 0 ? '' : _ref3$title;\n var content = ['BEGIN:VCALENDAR', 'VERSION:2.0', 'BEGIN:VEVENT', \"URL:\".concat(document.URL), 'METHOD:PUBLISH', // TODO: Will need to parse the date without Z for ics\n // This means I'll probably have to require a date lib - luxon most likely or datefns\n timezone === '' ? \"DTSTART:\".concat(startDatetime) : \"DTSTART;TZID=\".concat(timezone, \":\").concat(startDatetime), timezone === '' ? \"DTEND:\".concat(endDatetime) : \"DTEND;TZID=\".concat(timezone, \":\").concat(endDatetime), \"SUMMARY:\".concat(title), \"DESCRIPTION:\".concat(escapeICSDescription(description)), \"LOCATION:\".concat(location), 'END:VEVENT', 'END:VCALENDAR'].join('\\n');\n return isMobile() ? encodeURI(\"data:text/calendar;charset=utf8,\".concat(content)) : content;\n};\n/**\n * Takes an event object and a type of URL and returns either a calendar event\n * URL or the contents of an ics file.\n * @param {string} event.description\n * @param {string} event.duration\n * @param {string} event.endDatetime\n * @param {string} event.location\n * @param {string} event.startDatetime\n * @param {string} event.title\n * @param {enum} type One of SHARE_SITES from ./enums\n */\n\n\nvar buildShareUrl = function buildShareUrl(_ref4, type) {\n var _ref4$description = _ref4.description,\n description = _ref4$description === void 0 ? '' : _ref4$description,\n duration = _ref4.duration,\n endDatetime = _ref4.endDatetime,\n _ref4$location = _ref4.location,\n location = _ref4$location === void 0 ? '' : _ref4$location,\n startDatetime = _ref4.startDatetime,\n _ref4$timezone = _ref4.timezone,\n timezone = _ref4$timezone === void 0 ? '' : _ref4$timezone,\n _ref4$title = _ref4.title,\n title = _ref4$title === void 0 ? '' : _ref4$title;\n var encodeURI = type !== _enums.SHARE_SITES.ICAL && type !== _enums.SHARE_SITES.OUTLOOK;\n var data = {\n description: encodeURI ? encodeURIComponent(description) : description,\n duration: formatDuration(duration),\n endDatetime: formatDate(endDatetime),\n location: encodeURI ? encodeURIComponent(location) : location,\n startDatetime: formatDate(startDatetime),\n timezone: timezone,\n title: encodeURI ? encodeURIComponent(title) : title\n };\n\n switch (type) {\n case _enums.SHARE_SITES.GOOGLE:\n return googleShareUrl(data);\n\n case _enums.SHARE_SITES.YAHOO:\n return yahooShareUrl(data);\n\n default:\n return buildShareFile(data);\n }\n};\n\nexports.buildShareUrl = buildShareUrl;","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n// As defined on the list of supported events: https://reactjs.org/docs/events.html\nexport var clipboardEvents = ['onCopy', 'onCut', 'onPaste'];\nexport var compositionEvents = [\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate',\n];\nexport var focusEvents = ['onFocus', 'onBlur'];\nexport var formEvents = ['onInput', 'onInvalid', 'onReset', 'onSubmit'];\nexport var imageEvents = ['onLoad', 'onError'];\nexport var keyboardEvents = ['onKeyDown', 'onKeyPress', 'onKeyUp'];\nexport var mediaEvents = [\n 'onAbort',\n 'onCanPlay',\n 'onCanPlayThrough',\n 'onDurationChange',\n 'onEmptied',\n 'onEncrypted',\n 'onEnded',\n 'onError',\n 'onLoadedData',\n 'onLoadedMetadata',\n 'onLoadStart',\n 'onPause',\n 'onPlay',\n 'onPlaying',\n 'onProgress',\n 'onRateChange',\n 'onSeeked',\n 'onSeeking',\n 'onStalled',\n 'onSuspend',\n 'onTimeUpdate',\n 'onVolumeChange',\n 'onWaiting',\n];\nexport var mouseEvents = [\n 'onClick',\n 'onContextMenu',\n 'onDoubleClick',\n 'onMouseDown',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n];\nexport var dragEvents = [\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n];\nexport var selectionEvents = ['onSelect'];\nexport var touchEvents = ['onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart'];\nexport var pointerEvents = [\n 'onPointerDown',\n 'onPointerMove',\n 'onPointerUp',\n 'onPointerCancel',\n 'onGotPointerCapture',\n 'onLostPointerCapture',\n 'onPointerEnter',\n 'onPointerLeave',\n 'onPointerOver',\n 'onPointerOut',\n];\nexport var uiEvents = ['onScroll'];\nexport var wheelEvents = ['onWheel'];\nexport var animationEvents = [\n 'onAnimationStart',\n 'onAnimationEnd',\n 'onAnimationIteration',\n];\nexport var transitionEvents = ['onTransitionEnd'];\nexport var otherEvents = ['onToggle'];\nexport var changeEvents = ['onChange'];\nexport var allEvents = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], clipboardEvents, true), compositionEvents, true), focusEvents, true), formEvents, true), imageEvents, true), keyboardEvents, true), mediaEvents, true), mouseEvents, true), dragEvents, true), selectionEvents, true), touchEvents, true), pointerEvents, true), uiEvents, true), wheelEvents, true), animationEvents, true), transitionEvents, true), changeEvents, true), otherEvents, true);\n/**\n * Returns an object with on-event callback props curried with provided args.\n * @param {Object} props Props passed to a component.\n * @param {Function=} getArgs A function that returns argument(s) on-event callbacks\n * shall be curried with.\n */\nexport default function makeEventProps(props, getArgs) {\n var eventProps = {};\n allEvents.forEach(function (eventName) {\n var eventHandler = props[eventName];\n if (!eventHandler) {\n return;\n }\n if (getArgs) {\n eventProps[eventName] = (function (event) {\n return eventHandler(event, getArgs(eventName));\n });\n }\n else {\n eventProps[eventName] = eventHandler;\n }\n });\n return eventProps;\n}\n","export default function makeCancellablePromise(promise) {\n var isCancelled = false;\n var wrappedPromise = new Promise(function (resolve, reject) {\n promise\n .then(function (value) { return !isCancelled && resolve(value); })\n .catch(function (error) { return !isCancelled && reject(error); });\n });\n return {\n promise: wrappedPromise,\n cancel: function () {\n isCancelled = true;\n },\n };\n}\n","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);","import React from 'react';\nimport PropTypes from 'prop-types';\nexport default function Message(_ref) {\n var children = _ref.children,\n type = _ref.type;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"react-pdf__message react-pdf__message--\".concat(type)\n }, children);\n}\nMessage.propTypes = {\n children: PropTypes.node,\n type: PropTypes.oneOf(['error', 'loading', 'no-data']).isRequired\n};","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\n/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport invariant from 'tiny-invariant';\nvar DEFAULT_LINK_REL = 'noopener noreferrer nofollow';\nvar LinkService = /*#__PURE__*/function () {\n function LinkService() {\n _classCallCheck(this, LinkService);\n this.externalLinkTarget = null;\n this.externalLinkRel = null;\n }\n _createClass(LinkService, [{\n key: \"setDocument\",\n value: function setDocument(pdfDocument) {\n this.pdfDocument = pdfDocument;\n }\n }, {\n key: \"setViewer\",\n value: function setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n }, {\n key: \"setExternalLinkRel\",\n value: function setExternalLinkRel(externalLinkRel) {\n this.externalLinkRel = externalLinkRel;\n }\n }, {\n key: \"setExternalLinkTarget\",\n value: function setExternalLinkTarget(externalLinkTarget) {\n this.externalLinkTarget = externalLinkTarget;\n }\n }, {\n key: \"setHistory\",\n value: function setHistory() {}\n }, {\n key: \"pagesCount\",\n get: function get() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n }\n }, {\n key: \"page\",\n get: function get() {\n return this.pdfViewer.currentPageNumber;\n },\n set: function set(value) {\n this.pdfViewer.currentPageNumber = value;\n }\n }, {\n key: \"rotation\",\n get: function get() {\n return 0;\n },\n set: function set(value) {}\n }, {\n key: \"goToDestination\",\n value: function goToDestination(dest) {\n var _this = this;\n new Promise(function (resolve) {\n if (typeof dest === 'string') {\n _this.pdfDocument.getDestination(dest).then(resolve);\n } else if (Array.isArray(dest)) {\n resolve(dest);\n } else {\n dest.then(resolve);\n }\n }).then(function (explicitDest) {\n invariant(Array.isArray(explicitDest), \"\\\"\".concat(explicitDest, \"\\\" is not a valid destination array.\"));\n var destRef = explicitDest[0];\n new Promise(function (resolve) {\n if (destRef instanceof Object) {\n _this.pdfDocument.getPageIndex(destRef).then(function (pageIndex) {\n resolve(pageIndex);\n })[\"catch\"](function () {\n invariant(false, \"\\\"\".concat(destRef, \"\\\" is not a valid page reference.\"));\n });\n } else if (typeof destRef === 'number') {\n resolve(destRef);\n } else {\n invariant(false, \"\\\"\".concat(destRef, \"\\\" is not a valid destination reference.\"));\n }\n }).then(function (pageIndex) {\n var pageNumber = pageIndex + 1;\n invariant(pageNumber >= 1 && pageNumber <= _this.pagesCount, \"\\\"\".concat(pageNumber, \"\\\" is not a valid page number.\"));\n _this.pdfViewer.scrollPageIntoView({\n dest: dest,\n pageIndex: pageIndex,\n pageNumber: pageNumber\n });\n });\n });\n }\n }, {\n key: \"navigateTo\",\n value: function navigateTo(dest) {\n this.goToDestination(dest);\n }\n }, {\n key: \"goToPage\",\n value: function goToPage() {}\n }, {\n key: \"addLinkAttributes\",\n value: function addLinkAttributes(link, url, newWindow) {\n link.href = url;\n link.rel = this.externalLinkRel || DEFAULT_LINK_REL;\n link.target = newWindow ? '_blank' : this.externalLinkTarget || '';\n }\n }, {\n key: \"getDestinationHash\",\n value: function getDestinationHash() {\n return '#';\n }\n }, {\n key: \"getAnchorUrl\",\n value: function getAnchorUrl() {\n return '#';\n }\n }, {\n key: \"setHash\",\n value: function setHash() {}\n }, {\n key: \"executeNamedAction\",\n value: function executeNamedAction() {}\n }, {\n key: \"cachePageRef\",\n value: function cachePageRef() {}\n }, {\n key: \"isPageVisible\",\n value: function isPageVisible() {\n return true;\n }\n }, {\n key: \"isPageCached\",\n value: function isPageCached() {\n return true;\n }\n }]);\n return LinkService;\n}();\nexport { LinkService as default };","// As defined in https://github.com/mozilla/pdf.js/blob/d9fac3459609a807be6506fb3441b5da4b154d14/src/shared/util.js#L371-L374\n\nvar PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nexport default PasswordResponses;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\n\n/**\n * Checks if we're running in a browser environment.\n */\nexport var isBrowser = typeof document !== 'undefined';\n\n/**\n * Checks whether we're running from a local file system.\n */\nexport var isLocalFileSystem = isBrowser && window.location.protocol === 'file:';\n\n/**\n * Checks whether a variable is defined.\n *\n * @param {*} variable Variable to check\n */\nexport function isDefined(variable) {\n return typeof variable !== 'undefined';\n}\n\n/**\n * Checks whether a variable is defined and not null.\n *\n * @param {*} variable Variable to check\n */\nexport function isProvided(variable) {\n return isDefined(variable) && variable !== null;\n}\n\n/**\n * Checks whether a variable provided is a string.\n *\n * @param {*} variable Variable to check\n */\nexport function isString(variable) {\n return typeof variable === 'string';\n}\n\n/**\n * Checks whether a variable provided is an ArrayBuffer.\n *\n * @param {*} variable Variable to check\n */\nexport function isArrayBuffer(variable) {\n return variable instanceof ArrayBuffer;\n}\n\n/**\n * Checks whether a variable provided is a Blob.\n *\n * @param {*} variable Variable to check\n */\nexport function isBlob(variable) {\n invariant(isBrowser, 'isBlob can only be used in a browser environment');\n return variable instanceof Blob;\n}\n\n/**\n * Checks whether a variable provided is a File.\n *\n * @param {*} variable Variable to check\n */\nexport function isFile(variable) {\n invariant(isBrowser, 'isFile can only be used in a browser environment');\n return variable instanceof File;\n}\n\n/**\n * Checks whether a string provided is a data URI.\n *\n * @param {string} str String to check\n */\nexport function isDataURI(str) {\n return isString(str) && /^data:/.test(str);\n}\nexport function dataURItoByteString(dataURI) {\n invariant(isDataURI(dataURI), 'Invalid data URI.');\n var _dataURI$split = dataURI.split(','),\n _dataURI$split2 = _slicedToArray(_dataURI$split, 2),\n headersString = _dataURI$split2[0],\n dataString = _dataURI$split2[1];\n var headers = headersString.split(';');\n if (headers.indexOf('base64') !== -1) {\n return atob(dataString);\n }\n return unescape(dataString);\n}\nexport function getDevicePixelRatio() {\n return isBrowser && window.devicePixelRatio || 1;\n}\nvar allowFileAccessFromFilesTip = 'On Chromium based browsers, you can use --allow-file-access-from-files flag for debugging purposes.';\nexport function displayCORSWarning() {\n warning(!isLocalFileSystem, \"Loading PDF as base64 strings/URLs may not work on protocols other than HTTP/HTTPS. \".concat(allowFileAccessFromFilesTip));\n}\nexport function displayWorkerWarning() {\n warning(!isLocalFileSystem, \"Loading PDF.js worker may not work on protocols other than HTTP/HTTPS. \".concat(allowFileAccessFromFilesTip));\n}\nexport function cancelRunningTask(runningTask) {\n if (runningTask && runningTask.cancel) runningTask.cancel();\n}\nexport function makePageCallback(page, scale) {\n Object.defineProperty(page, 'width', {\n get: function get() {\n return this.view[2] * scale;\n },\n configurable: true\n });\n Object.defineProperty(page, 'height', {\n get: function get() {\n return this.view[3] * scale;\n },\n configurable: true\n });\n Object.defineProperty(page, 'originalWidth', {\n get: function get() {\n return this.view[2];\n },\n configurable: true\n });\n Object.defineProperty(page, 'originalHeight', {\n get: function get() {\n return this.view[3];\n },\n configurable: true\n });\n return page;\n}\nexport function isCancelException(error) {\n return error.name === 'RenderingCancelledException';\n}\nexport function loadFromFile(file) {\n return new Promise(function (resolve, reject) {\n var reader = new FileReader();\n reader.onload = function () {\n return resolve(new Uint8Array(reader.result));\n };\n reader.onerror = function (event) {\n switch (event.target.error.code) {\n case event.target.error.NOT_FOUND_ERR:\n return reject(new Error('Error while reading a file: File not found.'));\n case event.target.error.NOT_READABLE_ERR:\n return reject(new Error('Error while reading a file: File not readable.'));\n case event.target.error.SECURITY_ERR:\n return reject(new Error('Error while reading a file: Security error.'));\n case event.target.error.ABORT_ERR:\n return reject(new Error('Error while reading a file: Aborted.'));\n default:\n return reject(new Error('Error while reading a file.'));\n }\n };\n reader.readAsArrayBuffer(file);\n return null;\n });\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport PropTypes from 'prop-types';\nimport { mouseEvents, touchEvents, keyboardEvents } from 'make-event-props';\nimport { isDefined } from './utils';\nimport LinkService from '../LinkService';\nexport var eventProps = function () {\n var result = {};\n [].concat(_toConsumableArray(mouseEvents), _toConsumableArray(touchEvents), _toConsumableArray(keyboardEvents)).forEach(function (eventName) {\n result[eventName] = PropTypes.func;\n });\n return result;\n}();\nvar fileTypes = [PropTypes.string, PropTypes.instanceOf(ArrayBuffer), PropTypes.shape({\n data: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n httpHeaders: PropTypes.object,\n range: PropTypes.object,\n url: PropTypes.string,\n withCredentials: PropTypes.bool\n})];\nif (typeof File !== 'undefined') {\n fileTypes.push(PropTypes.instanceOf(File));\n}\nif (typeof Blob !== 'undefined') {\n fileTypes.push(PropTypes.instanceOf(Blob));\n}\nexport var isClassName = PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]);\nexport var isFile = PropTypes.oneOfType(fileTypes);\nexport var isLinkService = PropTypes.instanceOf(LinkService);\nexport var isLinkTarget = PropTypes.oneOf(['_self', '_blank', '_parent', '_top']);\nexport var isPage = PropTypes.shape({\n commonObjs: PropTypes.shape({}).isRequired,\n getAnnotations: PropTypes.func.isRequired,\n getTextContent: PropTypes.func.isRequired,\n getViewport: PropTypes.func.isRequired,\n render: PropTypes.func.isRequired\n});\nexport var isPageIndex = function isPageIndex(props, propName, componentName) {\n var pageIndex = props[propName],\n pageNumber = props.pageNumber,\n pdf = props.pdf;\n if (!isDefined(pdf)) {\n return null;\n }\n if (isDefined(pageIndex)) {\n if (typeof pageIndex !== 'number') {\n return new Error(\"`\".concat(propName, \"` of type `\").concat(_typeof(pageIndex), \"` supplied to `\").concat(componentName, \"`, expected `number`.\"));\n }\n if (pageIndex < 0) {\n return new Error(\"Expected `\".concat(propName, \"` to be greater or equal to 0.\"));\n }\n var numPages = pdf.numPages;\n if (pageIndex + 1 > numPages) {\n return new Error(\"Expected `\".concat(propName, \"` to be less or equal to \").concat(numPages - 1, \".\"));\n }\n } else if (!isDefined(pageNumber)) {\n return new Error(\"`\".concat(propName, \"` not supplied. Either pageIndex or pageNumber must be supplied to `\").concat(componentName, \"`.\"));\n }\n\n // Everything is fine\n return null;\n};\nexport var isPageNumber = function isPageNumber(props, propName, componentName) {\n var pageNumber = props[propName],\n pageIndex = props.pageIndex,\n pdf = props.pdf;\n if (!isDefined(pdf)) {\n return null;\n }\n if (isDefined(pageNumber)) {\n if (typeof pageNumber !== 'number') {\n return new Error(\"`\".concat(propName, \"` of type `\").concat(_typeof(pageNumber), \"` supplied to `\").concat(componentName, \"`, expected `number`.\"));\n }\n if (pageNumber < 1) {\n return new Error(\"Expected `\".concat(propName, \"` to be greater or equal to 1.\"));\n }\n var numPages = pdf.numPages;\n if (pageNumber > numPages) {\n return new Error(\"Expected `\".concat(propName, \"` to be less or equal to \").concat(numPages, \".\"));\n }\n } else if (!isDefined(pageIndex)) {\n return new Error(\"`\".concat(propName, \"` not supplied. Either pageIndex or pageNumber must be supplied to `\").concat(componentName, \"`.\"));\n }\n\n // Everything is fine\n return null;\n};\nexport var isPdf = PropTypes.oneOfType([PropTypes.shape({\n getDestination: PropTypes.func.isRequired,\n getOutline: PropTypes.func.isRequired,\n getPage: PropTypes.func.isRequired,\n numPages: PropTypes.number.isRequired\n}), PropTypes.bool]);\nexport var isRef = PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.any\n})]);\nexport var isRenderMode = PropTypes.oneOf(['canvas', 'none', 'svg']);\nexport var isRotate = PropTypes.oneOf([0, 90, 180, 270]);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"url\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n/**\n * Loads a PDF document. Passes it to all children.\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport makeEventProps from 'make-event-props';\nimport makeCancellable from 'make-cancellable-promise';\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport * as pdfjs from 'pdfjs-dist/build/pdf';\nimport DocumentContext from './DocumentContext';\nimport Message from './Message';\nimport LinkService from './LinkService';\nimport PasswordResponses from './PasswordResponses';\nimport { cancelRunningTask, dataURItoByteString, displayCORSWarning, isArrayBuffer, isBlob, isBrowser, isDataURI, isFile, loadFromFile } from './shared/utils';\nimport { eventProps, isClassName, isFile as isFileProp, isRef } from './shared/propTypes';\nvar PDFDataRangeTransport = pdfjs.PDFDataRangeTransport;\nvar Document = /*#__PURE__*/function (_PureComponent) {\n _inherits(Document, _PureComponent);\n var _super = _createSuper(Document);\n function Document() {\n var _this;\n _classCallCheck(this, Document);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n pdf: null\n });\n _defineProperty(_assertThisInitialized(_this), \"viewer\", {\n scrollPageIntoView: function scrollPageIntoView(_ref) {\n var dest = _ref.dest,\n pageIndex = _ref.pageIndex,\n pageNumber = _ref.pageNumber;\n // Handling jumping to internal links target\n var onItemClick = _this.props.onItemClick;\n\n // First, check if custom handling of onItemClick was provided\n if (onItemClick) {\n onItemClick({\n dest: dest,\n pageIndex: pageIndex,\n pageNumber: pageNumber\n });\n return;\n }\n\n // If not, try to look for target page within the <Document>.\n var page = _this.pages[pageIndex];\n if (page) {\n // Scroll to the page automatically\n page.scrollIntoView();\n return;\n }\n warning(false, \"An internal link leading to page \".concat(pageNumber, \" was clicked, but neither <Document> was provided with onItemClick nor it was able to find the page within itself. Either provide onItemClick to <Document> and handle navigating by yourself or ensure that all pages are rendered within <Document>.\"));\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"linkService\", new LinkService());\n _defineProperty(_assertThisInitialized(_this), \"loadDocument\", function () {\n // If another rendering is in progress, let's cancel it\n cancelRunningTask(_this.runningTask);\n\n // If another loading is in progress, let's destroy it\n if (_this.loadingTask) _this.loadingTask.destroy();\n var cancellable = makeCancellable(_this.findDocumentSource());\n _this.runningTask = cancellable;\n cancellable.promise.then(function (source) {\n _this.onSourceSuccess();\n if (!source) {\n return;\n }\n _this.setState(function (prevState) {\n if (!prevState.pdf) {\n return null;\n }\n return {\n pdf: null\n };\n });\n var _this$props = _this.props,\n options = _this$props.options,\n onLoadProgress = _this$props.onLoadProgress,\n onPassword = _this$props.onPassword;\n var destroyable = pdfjs.getDocument(_objectSpread(_objectSpread({}, source), options));\n destroyable.onPassword = onPassword;\n if (onLoadProgress) {\n destroyable.onProgress = onLoadProgress;\n }\n _this.loadingTask = destroyable;\n destroyable.promise.then(function (pdf) {\n _this.setState(function (prevState) {\n if (prevState.pdf && prevState.pdf.fingerprint === pdf.fingerprint) {\n return null;\n }\n return {\n pdf: pdf\n };\n }, _this.onLoadSuccess);\n })[\"catch\"](function (error) {\n _this.onLoadError(error);\n });\n })[\"catch\"](function (error) {\n _this.onSourceError(error);\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"setupLinkService\", function () {\n var _this$props2 = _this.props,\n externalLinkRel = _this$props2.externalLinkRel,\n externalLinkTarget = _this$props2.externalLinkTarget;\n _this.linkService.setViewer(_this.viewer);\n _this.linkService.setExternalLinkRel(externalLinkRel);\n _this.linkService.setExternalLinkTarget(externalLinkTarget);\n });\n _defineProperty(_assertThisInitialized(_this), \"onSourceSuccess\", function () {\n var onSourceSuccess = _this.props.onSourceSuccess;\n if (onSourceSuccess) onSourceSuccess();\n });\n _defineProperty(_assertThisInitialized(_this), \"onSourceError\", function (error) {\n warning(error);\n var onSourceError = _this.props.onSourceError;\n if (onSourceError) onSourceError(error);\n });\n _defineProperty(_assertThisInitialized(_this), \"onLoadSuccess\", function () {\n var onLoadSuccess = _this.props.onLoadSuccess;\n var pdf = _this.state.pdf;\n if (onLoadSuccess) onLoadSuccess(pdf);\n _this.pages = new Array(pdf.numPages);\n _this.linkService.setDocument(pdf);\n });\n _defineProperty(_assertThisInitialized(_this), \"onLoadError\", function (error) {\n _this.setState({\n pdf: false\n });\n warning(error);\n var onLoadError = _this.props.onLoadError;\n if (onLoadError) onLoadError(error);\n });\n _defineProperty(_assertThisInitialized(_this), \"findDocumentSource\", function () {\n return new Promise(function (resolve) {\n var file = _this.props.file;\n if (!file) {\n resolve(null);\n }\n\n // File is a string\n if (typeof file === 'string') {\n if (isDataURI(file)) {\n var fileByteString = dataURItoByteString(file);\n resolve({\n data: fileByteString\n });\n }\n displayCORSWarning();\n resolve({\n url: file\n });\n }\n\n // File is PDFDataRangeTransport\n if (file instanceof PDFDataRangeTransport) {\n resolve({\n range: file\n });\n }\n\n // File is an ArrayBuffer\n if (isArrayBuffer(file)) {\n resolve({\n data: file\n });\n }\n\n /**\n * The cases below are browser-only.\n * If you're running on a non-browser environment, these cases will be of no use.\n */\n if (isBrowser) {\n // File is a Blob\n if (isBlob(file) || isFile(file)) {\n loadFromFile(file).then(function (data) {\n resolve({\n data: data\n });\n });\n return;\n }\n }\n\n // At this point, file must be an object\n invariant(_typeof(file) === 'object', 'Invalid parameter in file, need either Uint8Array, string or a parameter object');\n invariant(file.url || file.data || file.range, 'Invalid parameter object: need either .data, .range or .url');\n\n // File .url is a string\n if (typeof file.url === 'string') {\n if (isDataURI(file.url)) {\n var url = file.url,\n otherParams = _objectWithoutProperties(file, _excluded);\n var _fileByteString = dataURItoByteString(url);\n resolve(_objectSpread({\n data: _fileByteString\n }, otherParams));\n }\n displayCORSWarning();\n }\n resolve(file);\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"registerPage\", function (pageIndex, ref) {\n _this.pages[pageIndex] = ref;\n });\n _defineProperty(_assertThisInitialized(_this), \"unregisterPage\", function (pageIndex) {\n delete _this.pages[pageIndex];\n });\n return _this;\n }\n _createClass(Document, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.loadDocument();\n this.setupLinkService();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var file = this.props.file;\n if (file !== prevProps.file) {\n this.loadDocument();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n // If rendering is in progress, let's cancel it\n cancelRunningTask(this.runningTask);\n\n // If loading is in progress, let's destroy it\n if (this.loadingTask) this.loadingTask.destroy();\n }\n }, {\n key: \"childContext\",\n get: function get() {\n var linkService = this.linkService,\n registerPage = this.registerPage,\n unregisterPage = this.unregisterPage;\n var _this$props3 = this.props,\n imageResourcesPath = _this$props3.imageResourcesPath,\n renderMode = _this$props3.renderMode,\n rotate = _this$props3.rotate;\n var pdf = this.state.pdf;\n return {\n imageResourcesPath: imageResourcesPath,\n linkService: linkService,\n pdf: pdf,\n registerPage: registerPage,\n renderMode: renderMode,\n rotate: rotate,\n unregisterPage: unregisterPage\n };\n }\n }, {\n key: \"eventProps\",\n get: function get() {\n var _this2 = this;\n return makeEventProps(this.props, function () {\n return _this2.state.pdf;\n });\n }\n\n /**\n * Called when a document source is resolved correctly\n */\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var children = this.props.children;\n return /*#__PURE__*/React.createElement(DocumentContext.Provider, {\n value: this.childContext\n }, children);\n }\n }, {\n key: \"renderContent\",\n value: function renderContent() {\n var file = this.props.file;\n var pdf = this.state.pdf;\n if (!file) {\n var noData = this.props.noData;\n return /*#__PURE__*/React.createElement(Message, {\n type: \"no-data\"\n }, typeof noData === 'function' ? noData() : noData);\n }\n if (pdf === null) {\n var loading = this.props.loading;\n return /*#__PURE__*/React.createElement(Message, {\n type: \"loading\"\n }, typeof loading === 'function' ? loading() : loading);\n }\n if (pdf === false) {\n var error = this.props.error;\n return /*#__PURE__*/React.createElement(Message, {\n type: \"error\"\n }, typeof error === 'function' ? error() : error);\n }\n return this.renderChildren();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n className = _this$props4.className,\n inputRef = _this$props4.inputRef;\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx('react-pdf__Document', className),\n ref: inputRef\n }, this.eventProps), this.renderContent());\n }\n }]);\n return Document;\n}(PureComponent);\nexport { Document as default };\nDocument.defaultProps = {\n error: 'Failed to load PDF file.',\n loading: 'Loading PDF…',\n noData: 'No PDF file specified.',\n onPassword: function onPassword(callback, reason) {\n switch (reason) {\n case PasswordResponses.NEED_PASSWORD:\n {\n // eslint-disable-next-line no-alert\n var password = prompt('Enter the password to open this PDF file.');\n callback(password);\n break;\n }\n case PasswordResponses.INCORRECT_PASSWORD:\n {\n // eslint-disable-next-line no-alert\n var _password = prompt('Invalid password. Please try again.');\n callback(_password);\n break;\n }\n default:\n }\n }\n};\nvar isFunctionOrNode = PropTypes.oneOfType([PropTypes.func, PropTypes.node]);\nDocument.propTypes = _objectSpread(_objectSpread({}, eventProps), {}, {\n children: PropTypes.node,\n className: isClassName,\n error: isFunctionOrNode,\n externalLinkRel: PropTypes.string,\n externalLinkTarget: PropTypes.string,\n file: isFileProp,\n imageResourcesPath: PropTypes.string,\n inputRef: isRef,\n loading: isFunctionOrNode,\n noData: isFunctionOrNode,\n onItemClick: PropTypes.func,\n onLoadError: PropTypes.func,\n onLoadProgress: PropTypes.func,\n onLoadSuccess: PropTypes.func,\n onPassword: PropTypes.func,\n onSourceError: PropTypes.func,\n onSourceSuccess: PropTypes.func,\n rotate: PropTypes.number\n});","import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nvar Ref = /*#__PURE__*/function () {\n function Ref(_ref) {\n var num = _ref.num,\n gen = _ref.gen;\n _classCallCheck(this, Ref);\n this.num = num;\n this.gen = gen;\n }\n _createClass(Ref, [{\n key: \"toString\",\n value: function toString() {\n var str = \"\".concat(this.num, \"R\");\n if (this.gen !== 0) {\n str += this.gen;\n }\n return str;\n }\n }]);\n return Ref;\n}();\nexport { Ref as default };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"item\"];\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport DocumentContext from './DocumentContext';\nimport OutlineContext from './OutlineContext';\nimport Ref from './Ref';\nimport { isDefined } from './shared/utils';\nimport { isPdf } from './shared/propTypes';\nexport var OutlineItemInternal = /*#__PURE__*/function (_PureComponent) {\n _inherits(OutlineItemInternal, _PureComponent);\n var _super = _createSuper(OutlineItemInternal);\n function OutlineItemInternal() {\n var _this;\n _classCallCheck(this, OutlineItemInternal);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"getDestination\", function () {\n return new Promise(function (resolve, reject) {\n if (isDefined(_this.destination)) {\n resolve(_this.destination);\n return;\n }\n var _this$props = _this.props,\n item = _this$props.item,\n pdf = _this$props.pdf;\n if (typeof item.dest === 'string') {\n pdf.getDestination(item.dest).then(resolve)[\"catch\"](reject);\n } else {\n resolve(item.dest);\n }\n }).then(function (destination) {\n _this.destination = destination;\n return destination;\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"getPageIndex\", function () {\n return new Promise(function (resolve, reject) {\n var pdf = _this.props.pdf;\n if (isDefined(_this.pageIndex)) {\n resolve(_this.pageIndex);\n return;\n }\n _this.getDestination().then(function (destination) {\n if (!destination) {\n return;\n }\n var _destination = _slicedToArray(destination, 1),\n ref = _destination[0];\n pdf.getPageIndex(new Ref(ref)).then(resolve)[\"catch\"](reject);\n });\n }).then(function (pageIndex) {\n _this.pageIndex = pageIndex;\n return _this.pageIndex;\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"getPageNumber\", function () {\n return new Promise(function (resolve, reject) {\n if (isDefined(_this.pageNumber)) {\n resolve(_this.pageNumber);\n return;\n }\n _this.getPageIndex().then(function (pageIndex) {\n resolve(pageIndex + 1);\n })[\"catch\"](reject);\n }).then(function (pageNumber) {\n _this.pageNumber = pageNumber;\n return pageNumber;\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var onClick = _this.props.onClick;\n event.preventDefault();\n if (!onClick) {\n return false;\n }\n return Promise.all([_this.getDestination(), _this.getPageIndex(), _this.getPageNumber()]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 3),\n dest = _ref2[0],\n pageIndex = _ref2[1],\n pageNumber = _ref2[2];\n onClick({\n dest: dest,\n pageIndex: pageIndex,\n pageNumber: pageNumber\n });\n });\n });\n return _this;\n }\n _createClass(OutlineItemInternal, [{\n key: \"renderSubitems\",\n value: function renderSubitems() {\n var _this$props2 = this.props,\n item = _this$props2.item,\n otherProps = _objectWithoutProperties(_this$props2, _excluded);\n if (!item.items || !item.items.length) {\n return null;\n }\n var subitems = item.items;\n return /*#__PURE__*/React.createElement(\"ul\", null, subitems.map(function (subitem, subitemIndex) {\n return /*#__PURE__*/React.createElement(OutlineItemInternal, _extends({\n key: typeof subitem.destination === 'string' ? subitem.destination : subitemIndex,\n item: subitem\n }, otherProps));\n }));\n }\n }, {\n key: \"render\",\n value: function render() {\n var item = this.props.item;\n return /*#__PURE__*/React.createElement(\"li\", null, /*#__PURE__*/React.createElement(\"a\", {\n href: \"#\",\n onClick: this.onClick\n }, item.title), this.renderSubitems());\n }\n }]);\n return OutlineItemInternal;\n}(PureComponent);\nvar isDestination = PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.any)]);\nOutlineItemInternal.propTypes = {\n item: PropTypes.shape({\n dest: isDestination,\n items: PropTypes.arrayOf(PropTypes.shape({\n dest: isDestination,\n title: PropTypes.string\n })),\n title: PropTypes.string\n }).isRequired,\n onClick: PropTypes.func,\n pdf: isPdf.isRequired\n};\nvar OutlineItem = function OutlineItem(props) {\n return /*#__PURE__*/React.createElement(DocumentContext.Consumer, null, function (documentContext) {\n return /*#__PURE__*/React.createElement(OutlineContext.Consumer, null, function (outlineContext) {\n return /*#__PURE__*/React.createElement(OutlineItemInternal, _extends({}, documentContext, outlineContext, props));\n });\n });\n};\nexport default OutlineItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport makeCancellable from 'make-cancellable-promise';\nimport makeEventProps from 'make-event-props';\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport DocumentContext from './DocumentContext';\nimport OutlineContext from './OutlineContext';\nimport OutlineItem from './OutlineItem';\nimport { cancelRunningTask } from './shared/utils';\nimport { eventProps, isClassName, isPdf, isRef } from './shared/propTypes';\nexport var OutlineInternal = /*#__PURE__*/function (_PureComponent) {\n _inherits(OutlineInternal, _PureComponent);\n var _super = _createSuper(OutlineInternal);\n function OutlineInternal() {\n var _this;\n _classCallCheck(this, OutlineInternal);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n outline: null\n });\n _defineProperty(_assertThisInitialized(_this), \"loadOutline\", function () {\n var pdf = _this.props.pdf;\n _this.setState(function (prevState) {\n if (!prevState.outline) {\n return null;\n }\n return {\n outline: null\n };\n });\n var cancellable = makeCancellable(pdf.getOutline());\n _this.runningTask = cancellable;\n cancellable.promise.then(function (outline) {\n _this.setState({\n outline: outline\n }, _this.onLoadSuccess);\n })[\"catch\"](function (error) {\n _this.onLoadError(error);\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onLoadSuccess\", function () {\n var onLoadSuccess = _this.props.onLoadSuccess;\n var outline = _this.state.outline;\n if (onLoadSuccess) onLoadSuccess(outline);\n });\n _defineProperty(_assertThisInitialized(_this), \"onLoadError\", function (error) {\n _this.setState({\n outline: false\n });\n warning(error);\n var onLoadError = _this.props.onLoadError;\n if (onLoadError) onLoadError(error);\n });\n _defineProperty(_assertThisInitialized(_this), \"onItemClick\", function (_ref) {\n var dest = _ref.dest,\n pageIndex = _ref.pageIndex,\n pageNumber = _ref.pageNumber;\n var onItemClick = _this.props.onItemClick;\n if (onItemClick) {\n onItemClick({\n dest: dest,\n pageIndex: pageIndex,\n pageNumber: pageNumber\n });\n }\n });\n return _this;\n }\n _createClass(OutlineInternal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var pdf = this.props.pdf;\n invariant(pdf, 'Attempted to load an outline, but no document was specified.');\n this.loadOutline();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var pdf = this.props.pdf;\n if (prevProps.pdf && pdf !== prevProps.pdf) {\n this.loadOutline();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n cancelRunningTask(this.runningTask);\n }\n }, {\n key: \"childContext\",\n get: function get() {\n return {\n onClick: this.onItemClick\n };\n }\n }, {\n key: \"eventProps\",\n get: function get() {\n var _this2 = this;\n return makeEventProps(this.props, function () {\n return _this2.state.outline;\n });\n }\n\n /**\n * Called when an outline is read successfully\n */\n }, {\n key: \"renderOutline\",\n value: function renderOutline() {\n var outline = this.state.outline;\n return /*#__PURE__*/React.createElement(\"ul\", null, outline.map(function (item, itemIndex) {\n return /*#__PURE__*/React.createElement(OutlineItem, {\n key: typeof item.destination === 'string' ? item.destination : itemIndex,\n item: item\n });\n }));\n }\n }, {\n key: \"render\",\n value: function render() {\n var pdf = this.props.pdf;\n var outline = this.state.outline;\n if (!pdf || !outline) {\n return null;\n }\n var _this$props = this.props,\n className = _this$props.className,\n inputRef = _this$props.inputRef;\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx('react-pdf__Outline', className),\n ref: inputRef\n }, this.eventProps), /*#__PURE__*/React.createElement(OutlineContext.Provider, {\n value: this.childContext\n }, this.renderOutline()));\n }\n }]);\n return OutlineInternal;\n}(PureComponent);\nOutlineInternal.propTypes = _objectSpread({\n className: isClassName,\n inputRef: isRef,\n onItemClick: PropTypes.func,\n onLoadError: PropTypes.func,\n onLoadSuccess: PropTypes.func,\n pdf: isPdf\n}, eventProps);\nfunction Outline(props, ref) {\n return /*#__PURE__*/React.createElement(DocumentContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(OutlineInternal, _extends({\n ref: ref\n }, context, props));\n });\n}\nexport default /*#__PURE__*/React.forwardRef(Outline);","/**\n * A function that merges React refs into one.\n * Supports both functions and ref objects created using createRef() and useRef().\n *\n * Usage:\n * ```tsx\n * <div ref={mergeRefs(ref1, ref2, ref3)} />\n * ```\n *\n * @param {(React.Ref<T> | undefined)[]} inputRefs Array of refs\n * @returns {React.Ref<T> | React.RefCallback<T>} Merged refs\n */\nexport default function mergeRefs() {\n var inputRefs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n inputRefs[_i] = arguments[_i];\n }\n var filteredInputRefs = inputRefs.filter(Boolean);\n if (filteredInputRefs.length <= 1) {\n var firstRef = filteredInputRefs[0];\n return firstRef || null;\n }\n return function mergedRefs(ref) {\n filteredInputRefs.forEach(function (inputRef) {\n if (typeof inputRef === 'function') {\n inputRef(ref);\n }\n else if (inputRef) {\n inputRef.current = ref;\n }\n });\n };\n}\n","import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport React, { createRef, PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport mergeRefs from 'merge-refs';\nimport warning from 'tiny-warning';\nimport * as pdfjs from 'pdfjs-dist/build/pdf';\nimport PageContext from '../PageContext';\nimport { getDevicePixelRatio, isCancelException, makePageCallback } from '../shared/utils';\nimport { isPage, isRef, isRotate } from '../shared/propTypes';\nvar ANNOTATION_MODE = pdfjs.AnnotationMode;\nexport var PageCanvasInternal = /*#__PURE__*/function (_PureComponent) {\n _inherits(PageCanvasInternal, _PureComponent);\n var _super = _createSuper(PageCanvasInternal);\n function PageCanvasInternal() {\n var _this;\n _classCallCheck(this, PageCanvasInternal);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"canvasElement\", /*#__PURE__*/createRef());\n _defineProperty(_assertThisInitialized(_this), \"onRenderSuccess\", function () {\n _this.renderer = null;\n var _this$props = _this.props,\n onRenderSuccess = _this$props.onRenderSuccess,\n page = _this$props.page,\n scale = _this$props.scale;\n if (onRenderSuccess) onRenderSuccess(makePageCallback(page, scale));\n });\n _defineProperty(_assertThisInitialized(_this), \"onRenderError\", function (error) {\n if (isCancelException(error)) {\n return;\n }\n warning(error);\n var onRenderError = _this.props.onRenderError;\n if (onRenderError) onRenderError(error);\n });\n _defineProperty(_assertThisInitialized(_this), \"drawPageOnCanvas\", function () {\n var canvas = _this.canvasElement.current;\n if (!canvas) {\n return null;\n }\n var _assertThisInitialize = _assertThisInitialized(_this),\n renderViewport = _assertThisInitialize.renderViewport,\n viewport = _assertThisInitialize.viewport;\n var _this$props2 = _this.props,\n canvasBackground = _this$props2.canvasBackground,\n page = _this$props2.page,\n renderForms = _this$props2.renderForms;\n canvas.width = renderViewport.width;\n canvas.height = renderViewport.height;\n canvas.style.width = \"\".concat(Math.floor(viewport.width), \"px\");\n canvas.style.height = \"\".concat(Math.floor(viewport.height), \"px\");\n var renderContext = {\n annotationMode: renderForms ? ANNOTATION_MODE.ENABLE_FORMS : ANNOTATION_MODE.ENABLE,\n get canvasContext() {\n return canvas.getContext('2d', {\n alpha: false\n });\n },\n viewport: renderViewport\n };\n if (canvasBackground) {\n renderContext.background = canvasBackground;\n }\n\n // If another render is in progress, let's cancel it\n _this.cancelRenderingTask();\n var cancellable = page.render(renderContext);\n _this.renderer = cancellable;\n return cancellable.promise.then(_this.onRenderSuccess)[\"catch\"](_this.onRenderError);\n });\n return _this;\n }\n _createClass(PageCanvasInternal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.drawPageOnCanvas();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props3 = this.props,\n canvasBackground = _this$props3.canvasBackground,\n devicePixelRatio = _this$props3.devicePixelRatio,\n page = _this$props3.page,\n renderForms = _this$props3.renderForms;\n if (canvasBackground !== prevProps.canvasBackground || devicePixelRatio !== prevProps.devicePixelRatio || renderForms !== prevProps.renderForms) {\n // Ensures the canvas will be re-rendered from scratch. Otherwise all form data will stay.\n page.cleanup();\n this.drawPageOnCanvas();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.cancelRenderingTask();\n var canvas = this.canvasElement.current;\n\n /**\n * Zeroing the width and height cause most browsers to release graphics\n * resources immediately, which can greatly reduce memory consumption.\n */\n if (canvas) {\n canvas.width = 0;\n canvas.height = 0;\n }\n }\n }, {\n key: \"cancelRenderingTask\",\n value: function cancelRenderingTask() {\n if (this.renderer) {\n this.renderer.cancel();\n this.renderer = null;\n }\n }\n\n /**\n * Called when a page is rendered successfully.\n */\n }, {\n key: \"devicePixelRatio\",\n get: function get() {\n var devicePixelRatio = this.props.devicePixelRatio;\n return devicePixelRatio || getDevicePixelRatio();\n }\n }, {\n key: \"renderViewport\",\n get: function get() {\n var devicePixelRatio = this.devicePixelRatio;\n var _this$props4 = this.props,\n page = _this$props4.page,\n rotate = _this$props4.rotate,\n scale = _this$props4.scale;\n return page.getViewport({\n scale: scale * devicePixelRatio,\n rotation: rotate\n });\n }\n }, {\n key: \"viewport\",\n get: function get() {\n var _this$props5 = this.props,\n page = _this$props5.page,\n rotate = _this$props5.rotate,\n scale = _this$props5.scale;\n return page.getViewport({\n scale: scale,\n rotation: rotate\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var canvasRef = this.props.canvasRef;\n return /*#__PURE__*/React.createElement(\"canvas\", {\n className: \"react-pdf__Page__canvas\",\n dir: \"ltr\",\n ref: mergeRefs(canvasRef, this.canvasElement),\n style: {\n display: 'block',\n userSelect: 'none'\n }\n });\n }\n }]);\n return PageCanvasInternal;\n}(PureComponent);\nPageCanvasInternal.propTypes = {\n canvasBackground: PropTypes.string,\n canvasRef: isRef,\n devicePixelRatio: PropTypes.number,\n onRenderError: PropTypes.func,\n onRenderSuccess: PropTypes.func,\n page: isPage.isRequired,\n renderForms: PropTypes.bool,\n rotate: isRotate,\n scale: PropTypes.number.isRequired\n};\nexport default function PageCanvas(props) {\n return /*#__PURE__*/React.createElement(PageContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(PageCanvasInternal, _extends({}, context, props));\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\nimport * as pdfjs from 'pdfjs-dist/build/pdf';\nimport PageContext from '../PageContext';\nimport { isCancelException, makePageCallback } from '../shared/utils';\nimport { isPage, isRotate } from '../shared/propTypes';\nexport var PageSVGInternal = /*#__PURE__*/function (_PureComponent) {\n _inherits(PageSVGInternal, _PureComponent);\n var _super = _createSuper(PageSVGInternal);\n function PageSVGInternal() {\n var _this;\n _classCallCheck(this, PageSVGInternal);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n svg: null\n });\n _defineProperty(_assertThisInitialized(_this), \"onRenderSuccess\", function () {\n _this.renderer = null;\n var _this$props = _this.props,\n onRenderSuccess = _this$props.onRenderSuccess,\n page = _this$props.page,\n scale = _this$props.scale;\n if (onRenderSuccess) onRenderSuccess(makePageCallback(page, scale));\n });\n _defineProperty(_assertThisInitialized(_this), \"onRenderError\", function (error) {\n if (isCancelException(error)) {\n return;\n }\n warning(error);\n var onRenderError = _this.props.onRenderError;\n if (onRenderError) onRenderError(error);\n });\n _defineProperty(_assertThisInitialized(_this), \"renderSVG\", function () {\n var page = _this.props.page;\n _this.renderer = page.getOperatorList();\n return _this.renderer.then(function (operatorList) {\n var svgGfx = new pdfjs.SVGGraphics(page.commonObjs, page.objs);\n _this.renderer = svgGfx.getSVG(operatorList, _this.viewport).then(function (svg) {\n _this.setState({\n svg: svg\n }, _this.onRenderSuccess);\n })[\"catch\"](_this.onRenderError);\n })[\"catch\"](_this.onRenderError);\n });\n _defineProperty(_assertThisInitialized(_this), \"drawPageOnContainer\", function (element) {\n var svg = _this.state.svg;\n if (!element || !svg) {\n return;\n }\n\n // Append SVG element to the main container, if this hasn't been done already\n if (!element.firstElementChild) {\n element.appendChild(svg);\n }\n var _this$viewport = _this.viewport,\n width = _this$viewport.width,\n height = _this$viewport.height;\n svg.setAttribute('width', width);\n svg.setAttribute('height', height);\n });\n return _this;\n }\n _createClass(PageSVGInternal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.renderSVG();\n }\n\n /**\n * Called when a page is rendered successfully.\n */\n }, {\n key: \"viewport\",\n get: function get() {\n var _this$props2 = this.props,\n page = _this$props2.page,\n rotate = _this$props2.rotate,\n scale = _this$props2.scale;\n return page.getViewport({\n scale: scale,\n rotation: rotate\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$viewport2 = this.viewport,\n width = _this$viewport2.width,\n height = _this$viewport2.height;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"react-pdf__Page__svg\"\n // Note: This cannot be shortened, as we need this function to be called with each render.\n ,\n ref: function ref(_ref) {\n return _this2.drawPageOnContainer(_ref);\n },\n style: {\n display: 'block',\n backgroundColor: 'white',\n overflow: 'hidden',\n width: width,\n height: height,\n userSelect: 'none'\n }\n });\n }\n }]);\n return PageSVGInternal;\n}(PureComponent);\nPageSVGInternal.propTypes = {\n onRenderError: PropTypes.func,\n onRenderSuccess: PropTypes.func,\n page: isPage.isRequired,\n rotate: isRotate,\n scale: PropTypes.number.isRequired\n};\nexport default function PageSVG(props) {\n return /*#__PURE__*/React.createElement(PageContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(PageSVGInternal, _extends({}, context, props));\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport React, { createRef, PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport makeCancellable from 'make-cancellable-promise';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport * as pdfjs from 'pdfjs-dist/build/pdf';\nimport PageContext from '../PageContext';\nimport { cancelRunningTask } from '../shared/utils';\nimport { isPage, isRotate } from '../shared/propTypes';\nexport var TextLayerInternal = /*#__PURE__*/function (_PureComponent) {\n _inherits(TextLayerInternal, _PureComponent);\n var _super = _createSuper(TextLayerInternal);\n function TextLayerInternal() {\n var _this;\n _classCallCheck(this, TextLayerInternal);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n textContent: null\n });\n _defineProperty(_assertThisInitialized(_this), \"layerElement\", /*#__PURE__*/createRef());\n _defineProperty(_assertThisInitialized(_this), \"endElement\", /*#__PURE__*/createRef());\n _defineProperty(_assertThisInitialized(_this), \"loadTextContent\", function () {\n var page = _this.props.page;\n var cancellable = makeCancellable(page.getTextContent());\n _this.runningTask = cancellable;\n cancellable.promise.then(function (textContent) {\n _this.setState({\n textContent: textContent\n }, _this.onLoadSuccess);\n })[\"catch\"](function (error) {\n _this.onLoadError(error);\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onLoadSuccess\", function () {\n var onGetTextSuccess = _this.props.onGetTextSuccess;\n var textContent = _this.state.textContent;\n if (onGetTextSuccess) onGetTextSuccess(textContent);\n });\n _defineProperty(_assertThisInitialized(_this), \"onLoadError\", function (error) {\n _this.setState({\n textItems: false\n });\n warning(error);\n var onGetTextError = _this.props.onGetTextError;\n if (onGetTextError) onGetTextError(error);\n });\n _defineProperty(_assertThisInitialized(_this), \"onRenderSuccess\", function () {\n var onRenderTextLayerSuccess = _this.props.onRenderTextLayerSuccess;\n if (onRenderTextLayerSuccess) onRenderTextLayerSuccess();\n });\n _defineProperty(_assertThisInitialized(_this), \"onRenderError\", function (error) {\n warning(error);\n var onRenderTextLayerError = _this.props.onRenderTextLayerError;\n if (onRenderTextLayerError) onRenderTextLayerError(error);\n });\n _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function () {\n var end = _this.endElement.current;\n if (!end) {\n return;\n }\n end.classList.add('active');\n });\n _defineProperty(_assertThisInitialized(_this), \"onMouseUp\", function () {\n var end = _this.endElement.current;\n if (!end) {\n return;\n }\n end.classList.remove('active');\n });\n return _this;\n }\n _createClass(TextLayerInternal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var page = this.props.page;\n invariant(page, 'Attempted to load page text content, but no page was specified.');\n warning(parseInt(window.getComputedStyle(document.body).getPropertyValue('--react-pdf-text-layer'), 10) === 1, 'TextLayer styles not found. Read more: https://github.com/wojtekmaj/react-pdf#support-for-text-layer');\n this.loadTextContent();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var page = this.props.page;\n if (prevProps.page && page !== prevProps.page) {\n this.loadTextContent();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n cancelRunningTask(this.runningTask);\n }\n }, {\n key: \"viewport\",\n get: function get() {\n var _this$props = this.props,\n page = _this$props.page,\n rotate = _this$props.rotate,\n scale = _this$props.scale;\n return page.getViewport({\n scale: scale,\n rotation: rotate\n });\n }\n }, {\n key: \"unrotatedViewport\",\n get: function get() {\n var _this$props2 = this.props,\n page = _this$props2.page,\n scale = _this$props2.scale;\n return page.getViewport({\n scale: scale\n });\n }\n\n /**\n * It might happen that the page is rotated by default. In such cases, we shouldn't rotate\n * text content.\n */\n }, {\n key: \"rotate\",\n get: function get() {\n var _this$props3 = this.props,\n page = _this$props3.page,\n rotate = _this$props3.rotate;\n return rotate - page.rotate;\n }\n }, {\n key: \"renderTextLayer\",\n value: function renderTextLayer() {\n var _this2 = this;\n var textContent = this.state.textContent;\n if (!textContent) {\n return null;\n }\n var container = this.layerElement.current;\n var viewport = this.viewport;\n var _this$props4 = this.props,\n customTextRenderer = _this$props4.customTextRenderer,\n pageIndex = _this$props4.pageIndex,\n pageNumber = _this$props4.pageNumber;\n\n // If another rendering is in progress, let's cancel it\n cancelRunningTask(this.runningTask);\n container.innerHTML = '';\n var parameters = {\n container: container,\n textContent: textContent,\n viewport: viewport\n };\n var cancellable = pdfjs.renderTextLayer(parameters);\n this.runningTask = cancellable;\n cancellable.promise.then(function () {\n var end = document.createElement('div');\n end.className = 'endOfContent';\n container.append(end);\n _this2.endElement.current = end;\n if (customTextRenderer) {\n var index = 0;\n textContent.items.forEach(function (item, itemIndex) {\n var child = _this2.layerElement.current.children[index];\n var content = customTextRenderer(_objectSpread({\n pageIndex: pageIndex,\n pageNumber: pageNumber,\n itemIndex: itemIndex\n }, item));\n child.innerHTML = content;\n index += item.str && item.hasEOL ? 2 : 1;\n });\n }\n _this2.onRenderSuccess();\n })[\"catch\"](function (error) {\n _this2.onRenderError(error);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n React.createElement(\"div\", {\n className: \"react-pdf__Page__textContent textLayer\",\n onMouseUp: this.onMouseUp,\n onMouseDown: this.onMouseDown,\n ref: this.layerElement\n }, this.renderTextLayer())\n );\n }\n }]);\n return TextLayerInternal;\n}(PureComponent);\nTextLayerInternal.propTypes = {\n customTextRenderer: PropTypes.func,\n onGetTextError: PropTypes.func,\n onGetTextSuccess: PropTypes.func,\n onRenderTextLayerError: PropTypes.func,\n onRenderTextLayerSuccess: PropTypes.func,\n page: isPage.isRequired,\n pageIndex: PropTypes.number.isRequired,\n pageNumber: PropTypes.number.isRequired,\n rotate: isRotate,\n scale: PropTypes.number\n};\nexport default function TextLayer(props) {\n return /*#__PURE__*/React.createElement(PageContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(TextLayerInternal, _extends({}, context, props));\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport React, { createRef, PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport makeCancellable from 'make-cancellable-promise';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport * as pdfjs from 'pdfjs-dist/build/pdf';\nimport DocumentContext from '../DocumentContext';\nimport PageContext from '../PageContext';\nimport { cancelRunningTask } from '../shared/utils';\nimport { isLinkService, isPage, isRotate } from '../shared/propTypes';\nexport var AnnotationLayerInternal = /*#__PURE__*/function (_PureComponent) {\n _inherits(AnnotationLayerInternal, _PureComponent);\n var _super = _createSuper(AnnotationLayerInternal);\n function AnnotationLayerInternal() {\n var _this;\n _classCallCheck(this, AnnotationLayerInternal);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n annotations: null\n });\n _defineProperty(_assertThisInitialized(_this), \"layerElement\", /*#__PURE__*/createRef());\n _defineProperty(_assertThisInitialized(_this), \"loadAnnotations\", function () {\n var page = _this.props.page;\n var cancellable = makeCancellable(page.getAnnotations());\n _this.runningTask = cancellable;\n cancellable.promise.then(function (annotations) {\n _this.setState({\n annotations: annotations\n }, _this.onLoadSuccess);\n })[\"catch\"](function (error) {\n _this.onLoadError(error);\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onLoadSuccess\", function () {\n var onGetAnnotationsSuccess = _this.props.onGetAnnotationsSuccess;\n var annotations = _this.state.annotations;\n if (onGetAnnotationsSuccess) onGetAnnotationsSuccess(annotations);\n });\n _defineProperty(_assertThisInitialized(_this), \"onLoadError\", function (error) {\n _this.setState({\n annotations: false\n });\n warning(error);\n var onGetAnnotationsError = _this.props.onGetAnnotationsError;\n if (onGetAnnotationsError) onGetAnnotationsError(error);\n });\n _defineProperty(_assertThisInitialized(_this), \"onRenderSuccess\", function () {\n var onRenderAnnotationLayerSuccess = _this.props.onRenderAnnotationLayerSuccess;\n if (onRenderAnnotationLayerSuccess) onRenderAnnotationLayerSuccess();\n });\n _defineProperty(_assertThisInitialized(_this), \"onRenderError\", function (error) {\n warning(error);\n var onRenderAnnotationLayerError = _this.props.onRenderAnnotationLayerError;\n if (onRenderAnnotationLayerError) onRenderAnnotationLayerError(error);\n });\n return _this;\n }\n _createClass(AnnotationLayerInternal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var page = this.props.page;\n invariant(page, 'Attempted to load page annotations, but no page was specified.');\n warning(parseInt(window.getComputedStyle(document.body).getPropertyValue('--react-pdf-annotation-layer'), 10) === 1, 'AnnotationLayer styles not found. Read more: https://github.com/wojtekmaj/react-pdf#support-for-annotations');\n this.loadAnnotations();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props = this.props,\n page = _this$props.page,\n renderForms = _this$props.renderForms;\n if (prevProps.page && page !== prevProps.page || renderForms !== prevProps.renderForms) {\n this.loadAnnotations();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n cancelRunningTask(this.runningTask);\n }\n }, {\n key: \"viewport\",\n get: function get() {\n var _this$props2 = this.props,\n page = _this$props2.page,\n rotate = _this$props2.rotate,\n scale = _this$props2.scale;\n return page.getViewport({\n scale: scale,\n rotation: rotate\n });\n }\n }, {\n key: \"renderAnnotationLayer\",\n value: function renderAnnotationLayer() {\n var annotations = this.state.annotations;\n if (!annotations) {\n return;\n }\n var _this$props3 = this.props,\n imageResourcesPath = _this$props3.imageResourcesPath,\n linkService = _this$props3.linkService,\n page = _this$props3.page,\n renderForms = _this$props3.renderForms;\n var viewport = this.viewport.clone({\n dontFlip: true\n });\n var parameters = {\n annotations: annotations,\n div: this.layerElement.current,\n imageResourcesPath: imageResourcesPath,\n linkService: linkService,\n page: page,\n renderForms: renderForms,\n viewport: viewport\n };\n this.layerElement.current.innerHTML = '';\n try {\n pdfjs.AnnotationLayer.render(parameters);\n this.onRenderSuccess();\n } catch (error) {\n this.onRenderError(error);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"react-pdf__Page__annotations annotationLayer\",\n ref: this.layerElement\n }, this.renderAnnotationLayer());\n }\n }]);\n return AnnotationLayerInternal;\n}(PureComponent);\nAnnotationLayerInternal.propTypes = {\n imageResourcesPath: PropTypes.string,\n linkService: isLinkService.isRequired,\n onGetAnnotationsError: PropTypes.func,\n onGetAnnotationsSuccess: PropTypes.func,\n onRenderAnnotationLayerError: PropTypes.func,\n onRenderAnnotationLayerSuccess: PropTypes.func,\n page: isPage,\n renderForms: PropTypes.bool,\n rotate: isRotate,\n scale: PropTypes.number\n};\nvar AnnotationLayer = function AnnotationLayer(props) {\n return /*#__PURE__*/React.createElement(DocumentContext.Consumer, null, function (documentContext) {\n return /*#__PURE__*/React.createElement(PageContext.Consumer, null, function (pageContext) {\n return /*#__PURE__*/React.createElement(AnnotationLayerInternal, _extends({}, documentContext, pageContext, props));\n });\n });\n};\nexport default AnnotationLayer;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport React, { createRef, PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport makeCancellable from 'make-cancellable-promise';\nimport makeEventProps from 'make-event-props';\nimport clsx from 'clsx';\nimport mergeRefs from 'merge-refs';\nimport invariant from 'tiny-invariant';\nimport warning from 'tiny-warning';\nimport DocumentContext from './DocumentContext';\nimport PageContext from './PageContext';\nimport Message from './Message';\nimport PageCanvas from './Page/PageCanvas';\nimport PageSVG from './Page/PageSVG';\nimport TextLayer from './Page/TextLayer';\nimport AnnotationLayer from './Page/AnnotationLayer';\nimport { cancelRunningTask, isProvided, makePageCallback } from './shared/utils';\nimport { eventProps, isClassName, isPageIndex, isPageNumber, isPdf, isRef, isRenderMode, isRotate } from './shared/propTypes';\nvar defaultScale = 1;\nexport var PageInternal = /*#__PURE__*/function (_PureComponent) {\n _inherits(PageInternal, _PureComponent);\n var _super = _createSuper(PageInternal);\n function PageInternal() {\n var _this;\n _classCallCheck(this, PageInternal);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n page: null\n });\n _defineProperty(_assertThisInitialized(_this), \"pageElement\", /*#__PURE__*/createRef());\n _defineProperty(_assertThisInitialized(_this), \"onLoadSuccess\", function () {\n var _this$props = _this.props,\n onLoadSuccess = _this$props.onLoadSuccess,\n registerPage = _this$props.registerPage;\n var page = _this.state.page;\n if (onLoadSuccess) onLoadSuccess(makePageCallback(page, _this.scale));\n if (registerPage) registerPage(_this.pageIndex, _this.pageElement.current);\n });\n _defineProperty(_assertThisInitialized(_this), \"onLoadError\", function (error) {\n _this.setState({\n page: false\n });\n warning(error);\n var onLoadError = _this.props.onLoadError;\n if (onLoadError) onLoadError(error);\n });\n _defineProperty(_assertThisInitialized(_this), \"loadPage\", function () {\n var pdf = _this.props.pdf;\n var pageNumber = _this.getPageNumber();\n if (!pageNumber) {\n return;\n }\n _this.setState(function (prevState) {\n if (!prevState.page) {\n return null;\n }\n return {\n page: null\n };\n });\n var cancellable = makeCancellable(pdf.getPage(pageNumber));\n _this.runningTask = cancellable;\n cancellable.promise.then(function (page) {\n _this.setState({\n page: page\n }, _this.onLoadSuccess);\n })[\"catch\"](function (error) {\n _this.onLoadError(error);\n });\n });\n return _this;\n }\n _createClass(PageInternal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var pdf = this.props.pdf;\n invariant(pdf, 'Attempted to load a page, but no document was specified.');\n this.loadPage();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var pdf = this.props.pdf;\n if (prevProps.pdf && pdf !== prevProps.pdf || this.getPageNumber() !== this.getPageNumber(prevProps)) {\n var unregisterPage = this.props.unregisterPage;\n if (unregisterPage) unregisterPage(this.getPageIndex(prevProps));\n this.loadPage();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var unregisterPage = this.props.unregisterPage;\n if (unregisterPage) unregisterPage(this.pageIndex);\n cancelRunningTask(this.runningTask);\n }\n }, {\n key: \"childContext\",\n get: function get() {\n var pageIndex = this.pageIndex,\n pageNumber = this.pageNumber;\n var page = this.state.page;\n if (!page) {\n return {};\n }\n var _this$props2 = this.props,\n canvasBackground = _this$props2.canvasBackground,\n customTextRenderer = _this$props2.customTextRenderer,\n devicePixelRatio = _this$props2.devicePixelRatio,\n onGetAnnotationsError = _this$props2.onGetAnnotationsError,\n onGetAnnotationsSuccess = _this$props2.onGetAnnotationsSuccess,\n onGetTextError = _this$props2.onGetTextError,\n onGetTextSuccess = _this$props2.onGetTextSuccess,\n onRenderAnnotationLayerError = _this$props2.onRenderAnnotationLayerError,\n onRenderAnnotationLayerSuccess = _this$props2.onRenderAnnotationLayerSuccess,\n onRenderError = _this$props2.onRenderError,\n onRenderSuccess = _this$props2.onRenderSuccess,\n onRenderTextLayerError = _this$props2.onRenderTextLayerError,\n onRenderTextLayerSuccess = _this$props2.onRenderTextLayerSuccess,\n renderForms = _this$props2.renderForms,\n renderInteractiveForms = _this$props2.renderInteractiveForms;\n return {\n canvasBackground: canvasBackground,\n customTextRenderer: customTextRenderer,\n devicePixelRatio: devicePixelRatio,\n onGetAnnotationsError: onGetAnnotationsError,\n onGetAnnotationsSuccess: onGetAnnotationsSuccess,\n onGetTextError: onGetTextError,\n onGetTextSuccess: onGetTextSuccess,\n onRenderAnnotationLayerError: onRenderAnnotationLayerError,\n onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccess,\n onRenderError: onRenderError,\n onRenderSuccess: onRenderSuccess,\n onRenderTextLayerError: onRenderTextLayerError,\n onRenderTextLayerSuccess: onRenderTextLayerSuccess,\n page: page,\n pageIndex: pageIndex,\n pageNumber: pageNumber,\n renderForms: renderForms !== null && renderForms !== void 0 ? renderForms : renderInteractiveForms,\n // For backward compatibility\n rotate: this.rotate,\n scale: this.scale\n };\n }\n\n /**\n * Called when a page is loaded successfully\n */\n }, {\n key: \"getPageIndex\",\n value: function getPageIndex() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n if (isProvided(props.pageNumber)) {\n return props.pageNumber - 1;\n }\n if (isProvided(props.pageIndex)) {\n return props.pageIndex;\n }\n return null;\n }\n }, {\n key: \"getPageNumber\",\n value: function getPageNumber() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n if (isProvided(props.pageNumber)) {\n return props.pageNumber;\n }\n if (isProvided(props.pageIndex)) {\n return props.pageIndex + 1;\n }\n return null;\n }\n }, {\n key: \"pageIndex\",\n get: function get() {\n return this.getPageIndex();\n }\n }, {\n key: \"pageNumber\",\n get: function get() {\n return this.getPageNumber();\n }\n }, {\n key: \"rotate\",\n get: function get() {\n var rotate = this.props.rotate;\n if (isProvided(rotate)) {\n return rotate;\n }\n var page = this.state.page;\n if (!page) {\n return null;\n }\n return page.rotate;\n }\n }, {\n key: \"scale\",\n get: function get() {\n var page = this.state.page;\n if (!page) {\n return null;\n }\n var _this$props3 = this.props,\n scale = _this$props3.scale,\n width = _this$props3.width,\n height = _this$props3.height;\n var rotate = this.rotate;\n\n // Be default, we'll render page at 100% * scale width.\n var pageScale = 1;\n\n // Passing scale explicitly null would cause the page not to render\n var scaleWithDefault = scale === null ? defaultScale : scale;\n\n // If width/height is defined, calculate the scale of the page so it could be of desired width.\n if (width || height) {\n var viewport = page.getViewport({\n scale: 1,\n rotation: rotate\n });\n pageScale = width ? width / viewport.width : height / viewport.height;\n }\n return scaleWithDefault * pageScale;\n }\n }, {\n key: \"eventProps\",\n get: function get() {\n var _this2 = this;\n return makeEventProps(this.props, function () {\n var page = _this2.state.page;\n if (!page) {\n return page;\n }\n return makePageCallback(page, _this2.scale);\n });\n }\n }, {\n key: \"pageKey\",\n get: function get() {\n return \"\".concat(this.pageIndex, \"@\").concat(this.scale, \"/\").concat(this.rotate);\n }\n }, {\n key: \"pageKeyNoScale\",\n get: function get() {\n return \"\".concat(this.pageIndex, \"/\").concat(this.rotate);\n }\n }, {\n key: \"renderMainLayer\",\n value: function renderMainLayer() {\n var _this$props4 = this.props,\n canvasRef = _this$props4.canvasRef,\n renderMode = _this$props4.renderMode;\n switch (renderMode) {\n case 'none':\n return null;\n case 'svg':\n return /*#__PURE__*/React.createElement(PageSVG, {\n key: \"\".concat(this.pageKeyNoScale, \"_svg\")\n });\n case 'canvas':\n default:\n return /*#__PURE__*/React.createElement(PageCanvas, {\n key: \"\".concat(this.pageKey, \"_canvas\"),\n canvasRef: canvasRef\n });\n }\n }\n }, {\n key: \"renderTextLayer\",\n value: function renderTextLayer() {\n var renderTextLayer = this.props.renderTextLayer;\n if (!renderTextLayer) {\n return null;\n }\n return /*#__PURE__*/React.createElement(TextLayer, {\n key: \"\".concat(this.pageKey, \"_text\")\n });\n }\n }, {\n key: \"renderAnnotationLayer\",\n value: function renderAnnotationLayer() {\n var renderAnnotationLayer = this.props.renderAnnotationLayer;\n if (!renderAnnotationLayer) {\n return null;\n }\n\n /**\n * As of now, PDF.js 2.0.943 returns warnings on unimplemented annotations in SVG mode.\n * Therefore, as a fallback, we render \"traditional\" AnnotationLayer component.\n */\n\n return /*#__PURE__*/React.createElement(AnnotationLayer, {\n key: \"\".concat(this.pageKey, \"_annotations\")\n });\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var children = this.props.children;\n return /*#__PURE__*/React.createElement(PageContext.Provider, {\n value: this.childContext\n }, this.renderMainLayer(), this.renderTextLayer(), this.renderAnnotationLayer(), children);\n }\n }, {\n key: \"renderContent\",\n value: function renderContent() {\n var pageNumber = this.pageNumber;\n var pdf = this.props.pdf;\n var page = this.state.page;\n if (!pageNumber) {\n var noData = this.props.noData;\n return /*#__PURE__*/React.createElement(Message, {\n type: \"no-data\"\n }, typeof noData === 'function' ? noData() : noData);\n }\n if (pdf === null || page === null) {\n var loading = this.props.loading;\n return /*#__PURE__*/React.createElement(Message, {\n type: \"loading\"\n }, typeof loading === 'function' ? loading() : loading);\n }\n if (pdf === false || page === false) {\n var error = this.props.error;\n return /*#__PURE__*/React.createElement(Message, {\n type: \"error\"\n }, typeof error === 'function' ? error() : error);\n }\n return this.renderChildren();\n }\n }, {\n key: \"render\",\n value: function render() {\n var pageNumber = this.pageNumber;\n var _this$props5 = this.props,\n className = _this$props5.className,\n inputRef = _this$props5.inputRef;\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx('react-pdf__Page', className),\n \"data-page-number\": pageNumber,\n ref: mergeRefs(inputRef, this.pageElement),\n style: {\n position: 'relative',\n minWidth: 'min-content',\n minHeight: 'min-content'\n }\n }, this.eventProps), this.renderContent());\n }\n }]);\n return PageInternal;\n}(PureComponent);\nPageInternal.defaultProps = {\n error: 'Failed to load the page.',\n loading: 'Loading page…',\n noData: 'No page specified.',\n renderAnnotationLayer: true,\n renderMode: 'canvas',\n renderTextLayer: true,\n scale: defaultScale\n};\nvar isFunctionOrNode = PropTypes.oneOfType([PropTypes.func, PropTypes.node]);\nPageInternal.propTypes = _objectSpread(_objectSpread({}, eventProps), {}, {\n canvasBackground: PropTypes.string,\n children: PropTypes.node,\n className: isClassName,\n customTextRenderer: PropTypes.func,\n devicePixelRatio: PropTypes.number,\n error: isFunctionOrNode,\n height: PropTypes.number,\n imageResourcesPath: PropTypes.string,\n inputRef: isRef,\n loading: isFunctionOrNode,\n noData: isFunctionOrNode,\n onGetTextError: PropTypes.func,\n onGetTextSuccess: PropTypes.func,\n onLoadError: PropTypes.func,\n onLoadSuccess: PropTypes.func,\n onRenderError: PropTypes.func,\n onRenderSuccess: PropTypes.func,\n onRenderTextLayerError: PropTypes.func,\n onRenderTextLayerSuccess: PropTypes.func,\n pageIndex: isPageIndex,\n pageNumber: isPageNumber,\n pdf: isPdf,\n registerPage: PropTypes.func,\n renderAnnotationLayer: PropTypes.bool,\n renderForms: PropTypes.bool,\n renderInteractiveForms: PropTypes.bool,\n // For backward compatibility\n renderMode: isRenderMode,\n renderTextLayer: PropTypes.bool,\n rotate: isRotate,\n scale: PropTypes.number,\n unregisterPage: PropTypes.func,\n width: PropTypes.number\n});\nfunction Page(props, ref) {\n return /*#__PURE__*/React.createElement(DocumentContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(PageInternal, _extends({\n ref: ref\n }, context, props));\n });\n}\nexport default /*#__PURE__*/React.forwardRef(Page);","import * as pdfjs from 'pdfjs-dist/build/pdf';\nimport Document from './Document';\nimport Outline from './Outline';\nimport Page from './Page';\nimport { displayWorkerWarning } from './shared/utils';\ndisplayWorkerWarning();\npdfjs.GlobalWorkerOptions.workerSrc = new URL('pdfjs-dist/build/pdf.worker.js', import.meta.url);\nexport { pdfjs, Document, Outline, Page };","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \"/* add css styles here (optional) */\\n\\n.styles_react-code-input-container__tpiKG {\\n position: relative;\\n}\\n\\n.styles_react-code-input__CRulA > input {\\n border: solid 1px #a8adb7;\\n border-right: none;\\n font-family: 'Lato';\\n font-size: 20px;\\n color: #525461;\\n text-align: center;\\n box-sizing: border-box;\\n border-radius: 0;\\n -webkit-appearance: initial;\\n}\\n\\n.styles_react-code-input__CRulA > input:last-child {\\n border-right: solid 1px #a8adb7;\\n border-top-right-radius: 6px;\\n border-bottom-right-radius: 6px;\\n}\\n\\n.styles_react-code-input__CRulA > input:first-child {\\n border-top-left-radius: 6px;\\n border-bottom-left-radius: 6px;\\n}\\n\\n.styles_react-code-input__CRulA > input:focus {\\n outline: none;\\n border: 1px solid #006fff;\\n caret-color: #006fff;\\n}\\n\\n.styles_react-code-input__CRulA > input:focus + input {\\n border-left: none;\\n}\\n\\n.styles_loading__Z65VQ {\\n position: absolute;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n text-align: center;\\n}\\n\\n.styles_blur__19vMK {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background-color: #fff;\\n opacity: 0.5;\\n filter: blur(0.5px);\\n transition: opacity 0.3s;\\n}\\n\\n.styles_title__1cca0 {\\n margin: 0;\\n height: 20px;\\n padding-bottom: 10px;\\n}\\n\\n.styles_spin__6y_8G {\\n display: inline-block;\\n animation: styles_loadingCircle__293ky 1s infinite linear;\\n}\\n\\n@keyframes styles_loadingCircle__293ky {\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\\n\";\nvar styles = { \"react-code-input-container\": \"styles_react-code-input-container__tpiKG\", \"react-code-input\": \"styles_react-code-input__CRulA\", \"loading\": \"styles_loading__Z65VQ\", \"blur\": \"styles_blur__19vMK\", \"title\": \"styles_title__1cca0\", \"spin\": \"styles_spin__6y_8G\", \"loadingCircle\": \"styles_loadingCircle__293ky\" };\nstyleInject(css);\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\nvar KEY_CODE = {\n backspace: 8,\n left: 37,\n up: 38,\n right: 39,\n down: 40\n};\n\nvar ReactCodeInput = function (_Component) {\n inherits(ReactCodeInput, _Component);\n\n function ReactCodeInput(props) {\n classCallCheck(this, ReactCodeInput);\n\n var _this = possibleConstructorReturn(this, (ReactCodeInput.__proto__ || Object.getPrototypeOf(ReactCodeInput)).call(this, props));\n\n _initialiseProps.call(_this);\n\n var fields = props.fields,\n values = props.values;\n\n var vals = void 0;\n var autoFocusIndex = 0;\n if (values && values.length) {\n vals = [];\n for (var i = 0; i < fields; i++) {\n vals.push(values[i] || '');\n }\n autoFocusIndex = values.length >= fields ? 0 : values.length;\n } else {\n vals = Array(fields).fill('');\n }\n _this.state = { values: vals, autoFocusIndex: autoFocusIndex };\n\n _this.iRefs = [];\n for (var _i = 0; _i < fields; _i++) {\n _this.iRefs.push(React.createRef());\n }\n _this.id = +new Date();\n\n // this.handleKeys = Array(fields).fill(false);\n return _this;\n }\n\n /**\n * Clear all field value & focus first field\n */\n\n\n // onKeyUp = e => {\n // const index = parseInt(e.target.dataset.id);\n // if (this.handleKeys[index]) {\n // this.handleKeys[index] = false;\n // const next = this.iRefs[index + 1];\n // if (next) {\n // next.current.focus();\n // }\n // }\n // };\n\n createClass(ReactCodeInput, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _state = this.state,\n values = _state.values,\n autoFocusIndex = _state.autoFocusIndex;\n var _props = this.props,\n loading = _props.loading,\n title = _props.title,\n fieldHeight = _props.fieldHeight,\n fieldWidth = _props.fieldWidth,\n fields = _props.fields,\n autoFocus = _props.autoFocus,\n className = _props.className,\n type = _props.type;\n\n var INPUT_STYLE = {\n width: fieldWidth,\n height: fieldHeight\n };\n var ROOT_STYLE = {\n width: fields * fieldWidth\n };\n var LOADING_STYLE = {\n lineHeight: fieldHeight + 'px'\n };\n return React.createElement(\n 'div',\n {\n className: styles['react-code-input-container'] + ' ' + className,\n style: ROOT_STYLE\n },\n title && React.createElement(\n 'p',\n { className: styles['title'] },\n title\n ),\n React.createElement(\n 'div',\n { className: styles['react-code-input'] },\n values.map(function (value, index) {\n return React.createElement('input', {\n type: type === 'number' ? 'tel' : type,\n pattern: type === 'number' ? '[0-9]*' : null,\n autoFocus: autoFocus && index === autoFocusIndex,\n style: INPUT_STYLE,\n key: _this2.id + '-' + index,\n 'data-id': index,\n value: value,\n id: _this2.props.id ? _this2.props.id + '-' + index : null,\n ref: _this2.iRefs[index],\n onChange: _this2.onChange,\n onKeyDown: _this2.onKeyDown\n // onKeyUp={this.onKeyUp}\n , onFocus: _this2.onFocus,\n disabled: _this2.props.disabled,\n required: _this2.props.required,\n placeholder: _this2.props.placeholder[index]\n });\n })\n ),\n loading && React.createElement(\n 'div',\n { className: styles['loading'], style: LOADING_STYLE },\n React.createElement('div', { className: styles['blur'] }),\n React.createElement(\n 'svg',\n {\n className: styles['spin'],\n viewBox: '0 0 1024 1024',\n 'data-icon': 'loading',\n width: '1em',\n height: '1em',\n fill: 'currentColor',\n 'aria-hidden': 'true'\n },\n React.createElement('path', {\n fill: '#006fff',\n d: 'M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 0 0-94.3-139.9 437.71 437.71 0 0 0-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z'\n })\n )\n )\n );\n }\n }]);\n return ReactCodeInput;\n}(Component);\n\nReactCodeInput.propTypes = {\n type: PropTypes.oneOf(['text', 'number']),\n onChange: PropTypes.func,\n onComplete: PropTypes.func,\n fields: PropTypes.number,\n loading: PropTypes.bool,\n title: PropTypes.string,\n fieldWidth: PropTypes.number,\n id: PropTypes.string,\n fieldHeight: PropTypes.number,\n autoFocus: PropTypes.bool,\n className: PropTypes.string,\n values: PropTypes.arrayOf(PropTypes.string),\n disabled: PropTypes.bool,\n required: PropTypes.bool,\n placeholder: PropTypes.arrayOf(PropTypes.string)\n};\nReactCodeInput.defaultProps = {\n type: 'number',\n fields: 6,\n fieldWidth: 58,\n fieldHeight: 54,\n autoFocus: true,\n disabled: false,\n required: false,\n placeholder: []\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this3 = this;\n\n this.__clearvalues__ = function () {\n var fields = _this3.props.fields;\n\n _this3.setState({ values: Array(fields).fill('') });\n _this3.iRefs[0].current.focus();\n };\n\n this.triggerChange = function () {\n var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this3.state.values;\n var _props2 = _this3.props,\n onChange = _props2.onChange,\n onComplete = _props2.onComplete,\n fields = _props2.fields;\n\n var val = values.join('');\n onChange && onChange(val);\n if (onComplete && val.length >= fields) {\n onComplete(val);\n }\n };\n\n this.onChange = function (e) {\n var index = parseInt(e.target.dataset.id);\n if (_this3.props.type === 'number') {\n e.target.value = e.target.value.replace(/[^\\d]/gi, '');\n }\n // this.handleKeys[index] = false;\n if (e.target.value === '' || _this3.props.type === 'number' && !e.target.validity.valid) {\n return;\n }\n var fields = _this3.props.fields;\n\n var next = void 0;\n var value = e.target.value;\n var values = _this3.state.values;\n\n values = Object.assign([], values);\n if (value.length > 1) {\n var nextIndex = value.length + index - 1;\n if (nextIndex >= fields) {\n nextIndex = fields - 1;\n }\n next = _this3.iRefs[nextIndex];\n var split = value.split('');\n split.forEach(function (item, i) {\n var cursor = index + i;\n if (cursor < fields) {\n values[cursor] = item;\n }\n });\n _this3.setState({ values: values });\n } else {\n next = _this3.iRefs[index + 1];\n values[index] = value;\n _this3.setState({ values: values });\n }\n\n if (next) {\n next.current.focus();\n next.current.select();\n }\n\n _this3.triggerChange(values);\n };\n\n this.onKeyDown = function (e) {\n var index = parseInt(e.target.dataset.id);\n var prevIndex = index - 1;\n var nextIndex = index + 1;\n var prev = _this3.iRefs[prevIndex];\n var next = _this3.iRefs[nextIndex];\n switch (e.keyCode) {\n case KEY_CODE.backspace:\n e.preventDefault();\n var vals = [].concat(toConsumableArray(_this3.state.values));\n if (_this3.state.values[index]) {\n vals[index] = '';\n _this3.setState({ values: vals });\n _this3.triggerChange(vals);\n } else if (prev) {\n vals[prevIndex] = '';\n prev.current.focus();\n _this3.setState({ values: vals });\n _this3.triggerChange(vals);\n }\n break;\n case KEY_CODE.left:\n e.preventDefault();\n if (prev) {\n prev.current.focus();\n }\n break;\n case KEY_CODE.right:\n e.preventDefault();\n if (next) {\n next.current.focus();\n }\n break;\n case KEY_CODE.up:\n case KEY_CODE.down:\n e.preventDefault();\n break;\n default:\n // this.handleKeys[index] = true;\n break;\n }\n };\n\n this.onFocus = function (e) {\n e.target.select(e);\n };\n};\n\nexport default ReactCodeInput;\n//# sourceMappingURL=index.es.js.map\n","export var KEY_PREFIX = 'persist:';\nexport var FLUSH = 'persist/FLUSH';\nexport var REHYDRATE = 'persist/REHYDRATE';\nexport var PAUSE = 'persist/PAUSE';\nexport var PERSIST = 'persist/PERSIST';\nexport var PURGE = 'persist/PURGE';\nexport var REGISTER = 'persist/REGISTER';\nexport var DEFAULT_VERSION = -1;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*\n autoMergeLevel1: \n - merges 1 level of substate\n - skips substate if already modified\n*/\nexport default function autoMergeLevel1(inboundState, originalState, reducedState, _ref) {\n var debug = _ref.debug;\n\n var newState = _objectSpread({}, reducedState); // only rehydrate if inboundState exists and is an object\n\n\n if (inboundState && _typeof(inboundState) === 'object') {\n Object.keys(inboundState).forEach(function (key) {\n // ignore _persist data\n if (key === '_persist') return; // if reducer modifies substate, skip auto rehydration\n\n if (originalState[key] !== reducedState[key]) {\n if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist/stateReconciler: sub state for key `%s` modified, skipping.', key);\n return;\n } // otherwise hard set the new value\n\n\n newState[key] = inboundState[key];\n });\n }\n\n if (process.env.NODE_ENV !== 'production' && debug && inboundState && _typeof(inboundState) === 'object') console.log(\"redux-persist/stateReconciler: rehydrated keys '\".concat(Object.keys(inboundState).join(', '), \"'\"));\n return newState;\n}","import { KEY_PREFIX, REHYDRATE } from './constants';\n// @TODO remove once flow < 0.63 support is no longer required.\nexport default function createPersistoid(config) {\n // defaults\n var blacklist = config.blacklist || null;\n var whitelist = config.whitelist || null;\n var transforms = config.transforms || [];\n var throttle = config.throttle || 0;\n var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n var storage = config.storage;\n var serialize;\n\n if (config.serialize === false) {\n serialize = function serialize(x) {\n return x;\n };\n } else if (typeof config.serialize === 'function') {\n serialize = config.serialize;\n } else {\n serialize = defaultSerialize;\n }\n\n var writeFailHandler = config.writeFailHandler || null; // initialize stateful values\n\n var lastState = {};\n var stagedState = {};\n var keysToProcess = [];\n var timeIterator = null;\n var writePromise = null;\n\n var update = function update(state) {\n // add any changed keys to the queue\n Object.keys(state).forEach(function (key) {\n if (!passWhitelistBlacklist(key)) return; // is keyspace ignored? noop\n\n if (lastState[key] === state[key]) return; // value unchanged? noop\n\n if (keysToProcess.indexOf(key) !== -1) return; // is key already queued? noop\n\n keysToProcess.push(key); // add key to queue\n }); //if any key is missing in the new state which was present in the lastState,\n //add it for processing too\n\n Object.keys(lastState).forEach(function (key) {\n if (state[key] === undefined && passWhitelistBlacklist(key) && keysToProcess.indexOf(key) === -1 && lastState[key] !== undefined) {\n keysToProcess.push(key);\n }\n }); // start the time iterator if not running (read: throttle)\n\n if (timeIterator === null) {\n timeIterator = setInterval(processNextKey, throttle);\n }\n\n lastState = state;\n };\n\n function processNextKey() {\n if (keysToProcess.length === 0) {\n if (timeIterator) clearInterval(timeIterator);\n timeIterator = null;\n return;\n }\n\n var key = keysToProcess.shift();\n var endState = transforms.reduce(function (subState, transformer) {\n return transformer.in(subState, key, lastState);\n }, lastState[key]);\n\n if (endState !== undefined) {\n try {\n stagedState[key] = serialize(endState);\n } catch (err) {\n console.error('redux-persist/createPersistoid: error serializing state', err);\n }\n } else {\n //if the endState is undefined, no need to persist the existing serialized content\n delete stagedState[key];\n }\n\n if (keysToProcess.length === 0) {\n writeStagedState();\n }\n }\n\n function writeStagedState() {\n // cleanup any removed keys just before write.\n Object.keys(stagedState).forEach(function (key) {\n if (lastState[key] === undefined) {\n delete stagedState[key];\n }\n });\n writePromise = storage.setItem(storageKey, serialize(stagedState)).catch(onWriteFail);\n }\n\n function passWhitelistBlacklist(key) {\n if (whitelist && whitelist.indexOf(key) === -1 && key !== '_persist') return false;\n if (blacklist && blacklist.indexOf(key) !== -1) return false;\n return true;\n }\n\n function onWriteFail(err) {\n // @TODO add fail handlers (typically storage full)\n if (writeFailHandler) writeFailHandler(err);\n\n if (err && process.env.NODE_ENV !== 'production') {\n console.error('Error storing data', err);\n }\n }\n\n var flush = function flush() {\n while (keysToProcess.length !== 0) {\n processNextKey();\n }\n\n return writePromise || Promise.resolve();\n }; // return `persistoid`\n\n\n return {\n update: update,\n flush: flush\n };\n} // @NOTE in the future this may be exposed via config\n\nfunction defaultSerialize(data) {\n return JSON.stringify(data);\n}","import { KEY_PREFIX } from './constants';\nexport default function getStoredState(config) {\n var transforms = config.transforms || [];\n var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n var storage = config.storage;\n var debug = config.debug;\n var deserialize;\n\n if (config.deserialize === false) {\n deserialize = function deserialize(x) {\n return x;\n };\n } else if (typeof config.deserialize === 'function') {\n deserialize = config.deserialize;\n } else {\n deserialize = defaultDeserialize;\n }\n\n return storage.getItem(storageKey).then(function (serialized) {\n if (!serialized) return undefined;else {\n try {\n var state = {};\n var rawState = deserialize(serialized);\n Object.keys(rawState).forEach(function (key) {\n state[key] = transforms.reduceRight(function (subState, transformer) {\n return transformer.out(subState, key, rawState);\n }, deserialize(rawState[key]));\n });\n return state;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production' && debug) console.log(\"redux-persist/getStoredState: Error restoring data \".concat(serialized), err);\n throw err;\n }\n }\n });\n}\n\nfunction defaultDeserialize(serial) {\n return JSON.parse(serial);\n}","import { KEY_PREFIX } from './constants';\nexport default function purgeStoredState(config) {\n var storage = config.storage;\n var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n return storage.removeItem(storageKey, warnIfRemoveError);\n}\n\nfunction warnIfRemoveError(err) {\n if (err && process.env.NODE_ENV !== 'production') {\n console.error('redux-persist/purgeStoredState: Error purging data stored state', err);\n }\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { FLUSH, PAUSE, PERSIST, PURGE, REHYDRATE, DEFAULT_VERSION } from './constants';\nimport autoMergeLevel1 from './stateReconciler/autoMergeLevel1';\nimport createPersistoid from './createPersistoid';\nimport defaultGetStoredState from './getStoredState';\nimport purgeStoredState from './purgeStoredState';\nvar DEFAULT_TIMEOUT = 5000;\n/*\n @TODO add validation / handling for:\n - persisting a reducer which has nested _persist\n - handling actions that fire before reydrate is called\n*/\n\nexport default function persistReducer(config, baseReducer) {\n if (process.env.NODE_ENV !== 'production') {\n if (!config) throw new Error('config is required for persistReducer');\n if (!config.key) throw new Error('key is required in persistor config');\n if (!config.storage) throw new Error(\"redux-persist: config.storage is required. Try using one of the provided storage engines `import storage from 'redux-persist/lib/storage'`\");\n }\n\n var version = config.version !== undefined ? config.version : DEFAULT_VERSION;\n var debug = config.debug || false;\n var stateReconciler = config.stateReconciler === undefined ? autoMergeLevel1 : config.stateReconciler;\n var getStoredState = config.getStoredState || defaultGetStoredState;\n var timeout = config.timeout !== undefined ? config.timeout : DEFAULT_TIMEOUT;\n var _persistoid = null;\n var _purge = false;\n var _paused = true;\n\n var conditionalUpdate = function conditionalUpdate(state) {\n // update the persistoid only if we are rehydrated and not paused\n state._persist.rehydrated && _persistoid && !_paused && _persistoid.update(state);\n return state;\n };\n\n return function (state, action) {\n var _ref = state || {},\n _persist = _ref._persist,\n rest = _objectWithoutProperties(_ref, [\"_persist\"]); // $FlowIgnore need to update State type\n\n\n var restState = rest;\n\n if (action.type === PERSIST) {\n var _sealed = false;\n\n var _rehydrate = function _rehydrate(payload, err) {\n // dev warning if we are already sealed\n if (process.env.NODE_ENV !== 'production' && _sealed) console.error(\"redux-persist: rehydrate for \\\"\".concat(config.key, \"\\\" called after timeout.\"), payload, err); // only rehydrate if we are not already sealed\n\n if (!_sealed) {\n action.rehydrate(config.key, payload, err);\n _sealed = true;\n }\n };\n\n timeout && setTimeout(function () {\n !_sealed && _rehydrate(undefined, new Error(\"redux-persist: persist timed out for persist key \\\"\".concat(config.key, \"\\\"\")));\n }, timeout); // @NOTE PERSIST resumes if paused.\n\n _paused = false; // @NOTE only ever create persistoid once, ensure we call it at least once, even if _persist has already been set\n\n if (!_persistoid) _persistoid = createPersistoid(config); // @NOTE PERSIST can be called multiple times, noop after the first\n\n if (_persist) {\n // We still need to call the base reducer because there might be nested\n // uses of persistReducer which need to be aware of the PERSIST action\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: _persist\n });\n }\n\n if (typeof action.rehydrate !== 'function' || typeof action.register !== 'function') throw new Error('redux-persist: either rehydrate or register is not a function on the PERSIST action. This can happen if the action is being replayed. This is an unexplored use case, please open an issue and we will figure out a resolution.');\n action.register(config.key);\n getStoredState(config).then(function (restoredState) {\n var migrate = config.migrate || function (s, v) {\n return Promise.resolve(s);\n };\n\n migrate(restoredState, version).then(function (migratedState) {\n _rehydrate(migratedState);\n }, function (migrateErr) {\n if (process.env.NODE_ENV !== 'production' && migrateErr) console.error('redux-persist: migration error', migrateErr);\n\n _rehydrate(undefined, migrateErr);\n });\n }, function (err) {\n _rehydrate(undefined, err);\n });\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: {\n version: version,\n rehydrated: false\n }\n });\n } else if (action.type === PURGE) {\n _purge = true;\n action.result(purgeStoredState(config));\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: _persist\n });\n } else if (action.type === FLUSH) {\n action.result(_persistoid && _persistoid.flush());\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: _persist\n });\n } else if (action.type === PAUSE) {\n _paused = true;\n } else if (action.type === REHYDRATE) {\n // noop on restState if purging\n if (_purge) return _objectSpread({}, restState, {\n _persist: _objectSpread({}, _persist, {\n rehydrated: true\n }) // @NOTE if key does not match, will continue to default else below\n\n });\n\n if (action.key === config.key) {\n var reducedState = baseReducer(restState, action);\n var inboundState = action.payload; // only reconcile state if stateReconciler and inboundState are both defined\n\n var reconciledRest = stateReconciler !== false && inboundState !== undefined ? stateReconciler(inboundState, state, reducedState, config) : reducedState;\n\n var _newState = _objectSpread({}, reconciledRest, {\n _persist: _objectSpread({}, _persist, {\n rehydrated: true\n })\n });\n\n return conditionalUpdate(_newState);\n }\n } // if we have not already handled PERSIST, straight passthrough\n\n\n if (!_persist) return baseReducer(state, action); // run base reducer:\n // is state modified ? return original : return updated\n\n var newState = baseReducer(restState, action);\n if (newState === restState) return state;\n return conditionalUpdate(_objectSpread({}, newState, {\n _persist: _persist\n }));\n };\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { createStore } from 'redux';\nimport { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from './constants';\nvar initialState = {\n registry: [],\n bootstrapped: false\n};\n\nvar persistorReducer = function persistorReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case REGISTER:\n return _objectSpread({}, state, {\n registry: [].concat(_toConsumableArray(state.registry), [action.key])\n });\n\n case REHYDRATE:\n var firstIndex = state.registry.indexOf(action.key);\n\n var registry = _toConsumableArray(state.registry);\n\n registry.splice(firstIndex, 1);\n return _objectSpread({}, state, {\n registry: registry,\n bootstrapped: registry.length === 0\n });\n\n default:\n return state;\n }\n};\n\nexport default function persistStore(store, options, cb) {\n // help catch incorrect usage of passing PersistConfig in as PersistorOptions\n if (process.env.NODE_ENV !== 'production') {\n var optionsToTest = options || {};\n var bannedKeys = ['blacklist', 'whitelist', 'transforms', 'storage', 'keyPrefix', 'migrate'];\n bannedKeys.forEach(function (k) {\n if (!!optionsToTest[k]) console.error(\"redux-persist: invalid option passed to persistStore: \\\"\".concat(k, \"\\\". You may be incorrectly passing persistConfig into persistStore, whereas it should be passed into persistReducer.\"));\n });\n }\n\n var boostrappedCb = cb || false;\n\n var _pStore = createStore(persistorReducer, initialState, options && options.enhancer ? options.enhancer : undefined);\n\n var register = function register(key) {\n _pStore.dispatch({\n type: REGISTER,\n key: key\n });\n };\n\n var rehydrate = function rehydrate(key, payload, err) {\n var rehydrateAction = {\n type: REHYDRATE,\n payload: payload,\n err: err,\n key: key // dispatch to `store` to rehydrate and `persistor` to track result\n\n };\n store.dispatch(rehydrateAction);\n\n _pStore.dispatch(rehydrateAction);\n\n if (boostrappedCb && persistor.getState().bootstrapped) {\n boostrappedCb();\n boostrappedCb = false;\n }\n };\n\n var persistor = _objectSpread({}, _pStore, {\n purge: function purge() {\n var results = [];\n store.dispatch({\n type: PURGE,\n result: function result(purgeResult) {\n results.push(purgeResult);\n }\n });\n return Promise.all(results);\n },\n flush: function flush() {\n var results = [];\n store.dispatch({\n type: FLUSH,\n result: function result(flushResult) {\n results.push(flushResult);\n }\n });\n return Promise.all(results);\n },\n pause: function pause() {\n store.dispatch({\n type: PAUSE\n });\n },\n persist: function persist() {\n store.dispatch({\n type: PERSIST,\n register: register,\n rehydrate: rehydrate\n });\n }\n });\n\n if (!(options && options.manualPersist)) {\n persistor.persist();\n }\n\n return persistor;\n}","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { PureComponent } from 'react'; // eslint-disable-line import/no-unresolved\n\nexport var PersistGate =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(PersistGate, _PureComponent);\n\n function PersistGate() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, PersistGate);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(PersistGate)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n bootstrapped: false\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_unsubscribe\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"handlePersistorState\", function () {\n var persistor = _this.props.persistor;\n\n var _persistor$getState = persistor.getState(),\n bootstrapped = _persistor$getState.bootstrapped;\n\n if (bootstrapped) {\n if (_this.props.onBeforeLift) {\n Promise.resolve(_this.props.onBeforeLift()).finally(function () {\n return _this.setState({\n bootstrapped: true\n });\n });\n } else {\n _this.setState({\n bootstrapped: true\n });\n }\n\n _this._unsubscribe && _this._unsubscribe();\n }\n });\n\n return _this;\n }\n\n _createClass(PersistGate, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._unsubscribe = this.props.persistor.subscribe(this.handlePersistorState);\n this.handlePersistorState();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._unsubscribe && this._unsubscribe();\n }\n }, {\n key: \"render\",\n value: function render() {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof this.props.children === 'function' && this.props.loading) console.error('redux-persist: PersistGate expects either a function child or loading prop, but not both. The loading prop will be ignored.');\n }\n\n if (typeof this.props.children === 'function') {\n return this.props.children(this.state.bootstrapped);\n }\n\n return this.state.bootstrapped ? this.props.children : this.props.loading;\n }\n }]);\n\n return PersistGate;\n}(PureComponent);\n\n_defineProperty(PersistGate, \"defaultProps\", {\n children: null,\n loading: null\n});","\"use strict\";\n\nexports.__esModule = true;\nexports.default = createWebStorage;\n\nvar _getStorage = _interopRequireDefault(require(\"./getStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createWebStorage(type) {\n var storage = (0, _getStorage.default)(type);\n return {\n getItem: function getItem(key) {\n return new Promise(function (resolve, reject) {\n resolve(storage.getItem(key));\n });\n },\n setItem: function setItem(key, item) {\n return new Promise(function (resolve, reject) {\n resolve(storage.setItem(key, item));\n });\n },\n removeItem: function removeItem(key) {\n return new Promise(function (resolve, reject) {\n resolve(storage.removeItem(key));\n });\n }\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getStorage;\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction noop() {}\n\nvar noopStorage = {\n getItem: noop,\n setItem: noop,\n removeItem: noop\n};\n\nfunction hasStorage(storageType) {\n if ((typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) !== 'object' || !(storageType in self)) {\n return false;\n }\n\n try {\n var storage = self[storageType];\n var testKey = \"redux-persist \".concat(storageType, \" test\");\n storage.setItem(testKey, 'test');\n storage.getItem(testKey);\n storage.removeItem(testKey);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') console.warn(\"redux-persist \".concat(storageType, \" test failed, persistence will be disabled.\"));\n return false;\n }\n\n return true;\n}\n\nfunction getStorage(type) {\n var storageType = \"\".concat(type, \"Storage\");\n if (hasStorage(storageType)) return self[storageType];else {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\"redux-persist failed to create sync storage. falling back to noop storage.\");\n }\n\n return noopStorage;\n }\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _createWebStorage = _interopRequireDefault(require(\"./createWebStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = (0, _createWebStorage.default)('local');\n\nexports.default = _default;","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changedâ€. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport { getUnhandledProps } from '../../lib';\nimport Checkbox from '../../modules/Checkbox';\n/**\n * A Radio is sugar for <Checkbox radio />.\n * Useful for exclusive groups of sliders or toggles.\n * @see Checkbox\n * @see Form\n */\n\nfunction Radio(props) {\n var slider = props.slider,\n toggle = props.toggle,\n type = props.type;\n var rest = getUnhandledProps(Radio, props); // const ElementType = getElementType(Radio, props)\n // radio, slider, toggle are exclusive\n // use an undefined radio if slider or toggle are present\n\n var radio = !(slider || toggle) || undefined;\n return /*#__PURE__*/React.createElement(Checkbox, _extends({}, rest, {\n type: type,\n radio: radio,\n slider: slider,\n toggle: toggle\n }));\n}\n\nRadio.handledProps = [\"slider\", \"toggle\", \"type\"];\nRadio.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** Format to emphasize the current selection state. */\n slider: Checkbox.propTypes.slider,\n\n /** Format to show an on or off choice. */\n toggle: Checkbox.propTypes.toggle,\n\n /** HTML input type, either checkbox or radio. */\n type: Checkbox.propTypes.type\n} : {};\nRadio.defaultProps = {\n type: 'radio'\n};\nexport default Radio;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _isNil from \"lodash-es/isNil\";\nimport _get from \"lodash-es/get\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { createElement } from 'react';\nimport { childrenUtils, createHTMLLabel, customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useWidthProp } from '../../lib';\nimport Label from '../../elements/Label';\nimport Checkbox from '../../modules/Checkbox';\nimport Radio from '../../addons/Radio';\n/**\n * A field is a form element containing a label and an input.\n * @see Form\n * @see Button\n * @see Checkbox\n * @see Dropdown\n * @see Input\n * @see Radio\n * @see Select\n * @see Visibility\n */\n\nfunction FormField(props) {\n var children = props.children,\n className = props.className,\n content = props.content,\n control = props.control,\n disabled = props.disabled,\n error = props.error,\n inline = props.inline,\n label = props.label,\n required = props.required,\n type = props.type,\n width = props.width,\n id = props.id;\n var classes = cx(useKeyOnly(disabled, 'disabled'), useKeyOnly(error, 'error'), useKeyOnly(inline, 'inline'), useKeyOnly(required, 'required'), useWidthProp(width, 'wide'), 'field', className);\n var rest = getUnhandledProps(FormField, props);\n var ElementType = getElementType(FormField, props);\n\n var errorPointing = _get(error, 'pointing', 'above');\n\n var errorLabel = Label.create(error, {\n autoGenerateKey: false,\n defaultProps: {\n prompt: true,\n pointing: errorPointing,\n id: id ? id + \"-error-message\" : undefined,\n role: 'alert',\n 'aria-atomic': true\n }\n });\n var errorLabelBefore = (errorPointing === 'below' || errorPointing === 'right') && errorLabel;\n var errorLabelAfter = (errorPointing === 'above' || errorPointing === 'left') && errorLabel; // ----------------------------------------\n // No Control\n // ----------------------------------------\n\n if (_isNil(control)) {\n if (_isNil(label)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes,\n id: id\n }), childrenUtils.isNil(children) ? content : children);\n }\n\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes,\n id: id\n }), errorLabelBefore, createHTMLLabel(label, {\n autoGenerateKey: false\n }), errorLabelAfter);\n } // ----------------------------------------\n // Checkbox/Radio Control\n // ----------------------------------------\n\n\n var ariaDescribedBy = id && error ? id + \"-error-message\" : null;\n var ariaAttrs = {\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': error ? true : undefined\n };\n\n var controlProps = _extends({}, rest, {\n content: content,\n children: children,\n disabled: disabled,\n required: required,\n type: type,\n id: id\n }); // wrap HTML checkboxes/radios in the label\n\n\n if (control === 'input' && (type === 'checkbox' || type === 'radio')) {\n return /*#__PURE__*/React.createElement(ElementType, {\n className: classes\n }, /*#__PURE__*/React.createElement(\"label\", null, errorLabelBefore, /*#__PURE__*/createElement(control, _extends({}, ariaAttrs, controlProps)), \" \", label, errorLabelAfter));\n } // pass label prop to controls that support it\n\n\n if (control === Checkbox || control === Radio) {\n return /*#__PURE__*/React.createElement(ElementType, {\n className: classes\n }, errorLabelBefore, /*#__PURE__*/createElement(control, _extends({}, ariaAttrs, controlProps, {\n label: label\n })), errorLabelAfter);\n } // ----------------------------------------\n // Other Control\n // ----------------------------------------\n\n\n return /*#__PURE__*/React.createElement(ElementType, {\n className: classes\n }, createHTMLLabel(label, {\n defaultProps: {\n htmlFor: id\n },\n autoGenerateKey: false\n }), errorLabelBefore, /*#__PURE__*/createElement(control, _extends({}, ariaAttrs, controlProps)), errorLabelAfter);\n}\n\nFormField.handledProps = [\"as\", \"children\", \"className\", \"content\", \"control\", \"disabled\", \"error\", \"id\", \"inline\", \"label\", \"required\", \"type\", \"width\"];\nFormField.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /**\n * A form control component (i.e. Dropdown) or HTML tagName (i.e. 'input').\n * Extra FormField props are passed to the control component.\n * Mutually exclusive with children.\n */\n control: PropTypes.oneOfType([PropTypes.elementType, PropTypes.oneOf(['button', 'input', 'select', 'textarea'])]),\n\n /** Individual fields may be disabled. */\n disabled: PropTypes.bool,\n\n /** Individual fields may display an error state along with a message. */\n error: PropTypes.oneOfType([PropTypes.bool, customPropTypes.itemShorthand]),\n\n /** The id of the control */\n id: PropTypes.string,\n\n /** A field can have its label next to instead of above it. */\n inline: PropTypes.bool,\n // Heads Up!\n // Do not disallow children with `label` shorthand\n // The `control` might accept a `label` prop and `children`\n\n /** Mutually exclusive with children. */\n label: PropTypes.oneOfType([PropTypes.node, PropTypes.object]),\n\n /** A field can show that input is mandatory. */\n required: PropTypes.bool,\n\n /** Passed to the control component (i.e. <input type='password' />) */\n type: customPropTypes.every([customPropTypes.demand(['control']) // don't strictly validate HTML types\n // a control might be passed that uses a `type` prop with unknown values\n // let the control validate if for us\n ]),\n\n /** A field can specify its width in grid columns */\n width: PropTypes.oneOf(SUI.WIDTHS)\n} : {};\nexport default FormField;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\nimport Button from '../../elements/Button';\nimport FormField from './FormField';\n/**\n * Sugar for <Form.Field control={Button} />.\n * @see Button\n * @see Form\n */\n\nfunction FormButton(props) {\n var control = props.control;\n var rest = getUnhandledProps(FormButton, props);\n var ElementType = getElementType(FormButton, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n control: control\n }));\n}\n\nFormButton.handledProps = [\"as\", \"control\"];\nFormButton.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A FormField control prop. */\n control: FormField.propTypes.control\n} : {};\nFormButton.defaultProps = {\n as: FormField,\n control: Button\n};\nexport default FormButton;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\nimport Checkbox from '../../modules/Checkbox';\nimport FormField from './FormField';\n/**\n * Sugar for <Form.Field control={Checkbox} />.\n * @see Checkbox\n * @see Form\n */\n\nfunction FormCheckbox(props) {\n var control = props.control;\n var rest = getUnhandledProps(FormCheckbox, props);\n var ElementType = getElementType(FormCheckbox, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n control: control\n }));\n}\n\nFormCheckbox.handledProps = [\"as\", \"control\"];\nFormCheckbox.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A FormField control prop. */\n control: FormField.propTypes.control\n} : {};\nFormCheckbox.defaultProps = {\n as: FormField,\n control: Checkbox\n};\nexport default FormCheckbox;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\nimport Dropdown from '../../modules/Dropdown';\nimport FormField from './FormField';\n/**\n * Sugar for <Form.Field control={Dropdown} />.\n * @see Dropdown\n * @see Form\n */\n\nfunction FormDropdown(props) {\n var control = props.control;\n var rest = getUnhandledProps(FormDropdown, props);\n var ElementType = getElementType(FormDropdown, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n control: control\n }));\n}\n\nFormDropdown.handledProps = [\"as\", \"control\"];\nFormDropdown.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A FormField control prop. */\n control: FormField.propTypes.control\n} : {};\nFormDropdown.defaultProps = {\n as: FormField,\n control: Dropdown\n};\nexport default FormDropdown;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useWidthProp } from '../../lib';\n/**\n * A set of fields can appear grouped together.\n * @see Form\n */\n\nfunction FormGroup(props) {\n var children = props.children,\n className = props.className,\n grouped = props.grouped,\n inline = props.inline,\n unstackable = props.unstackable,\n widths = props.widths;\n var classes = cx(useKeyOnly(grouped, 'grouped'), useKeyOnly(inline, 'inline'), useKeyOnly(unstackable, 'unstackable'), useWidthProp(widths, null, true), 'fields', className);\n var rest = getUnhandledProps(FormGroup, props);\n var ElementType = getElementType(FormGroup, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), children);\n}\n\nFormGroup.handledProps = [\"as\", \"children\", \"className\", \"grouped\", \"inline\", \"unstackable\", \"widths\"];\nFormGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Fields can show related choices. */\n grouped: customPropTypes.every([customPropTypes.disallow(['inline']), PropTypes.bool]),\n\n /** Multiple fields may be inline in a row. */\n inline: customPropTypes.every([customPropTypes.disallow(['grouped']), PropTypes.bool]),\n\n /** A form group can prevent itself from stacking on mobile. */\n unstackable: PropTypes.bool,\n\n /** Fields Groups can specify their width in grid columns or automatically divide fields to be equal width. */\n widths: PropTypes.oneOf([].concat(SUI.WIDTHS, ['equal']))\n} : {};\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\nimport Input from '../../elements/Input';\nimport FormField from './FormField';\n/**\n * Sugar for <Form.Field control={Input} />.\n * @see Form\n * @see Input\n */\n\nfunction FormInput(props) {\n var control = props.control;\n var rest = getUnhandledProps(FormInput, props);\n var ElementType = getElementType(FormInput, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n control: control\n }));\n}\n\nFormInput.handledProps = [\"as\", \"control\"];\nFormInput.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A FormField control prop. */\n control: FormField.propTypes.control\n} : {};\nFormInput.defaultProps = {\n as: FormField,\n control: Input\n};\nexport default FormInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\nimport Radio from '../../addons/Radio';\nimport FormField from './FormField';\n/**\n * Sugar for <Form.Field control={Radio} />.\n * @see Form\n * @see Radio\n */\n\nfunction FormRadio(props) {\n var control = props.control;\n var rest = getUnhandledProps(FormRadio, props);\n var ElementType = getElementType(FormRadio, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n control: control\n }));\n}\n\nFormRadio.handledProps = [\"as\", \"control\"];\nFormRadio.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A FormField control prop. */\n control: FormField.propTypes.control\n} : {};\nFormRadio.defaultProps = {\n as: FormField,\n control: Radio\n};\nexport default FormRadio;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Dropdown from '../../modules/Dropdown';\n/**\n * A Select is sugar for <Dropdown selection />.\n * @see Dropdown\n * @see Form\n */\n\nfunction Select(props) {\n return /*#__PURE__*/React.createElement(Dropdown, _extends({}, props, {\n selection: true\n }));\n}\n\nSelect.handledProps = [\"options\"];\nSelect.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** Array of Dropdown.Item props e.g. `{ text: '', value: '' }` */\n options: PropTypes.arrayOf(PropTypes.shape(Dropdown.Item.propTypes)).isRequired\n} : {};\nSelect.Divider = Dropdown.Divider;\nSelect.Header = Dropdown.Header;\nSelect.Item = Dropdown.Item;\nSelect.Menu = Dropdown.Menu;\nexport default Select;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\nimport Select from '../../addons/Select';\nimport Dropdown from '../../modules/Dropdown';\nimport FormField from './FormField';\n/**\n * Sugar for <Form.Field control={Select} />.\n * @see Form\n * @see Select\n */\n\nfunction FormSelect(props) {\n var control = props.control,\n options = props.options;\n var rest = getUnhandledProps(FormSelect, props);\n var ElementType = getElementType(FormSelect, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n control: control,\n options: options\n }));\n}\n\nFormSelect.handledProps = [\"as\", \"control\", \"options\"];\nFormSelect.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A FormField control prop. */\n control: FormField.propTypes.control,\n\n /** Array of Dropdown.Item props e.g. `{ text: '', value: '' }` */\n options: PropTypes.arrayOf(PropTypes.shape(Dropdown.Item.propTypes)).isRequired\n} : {};\nFormSelect.defaultProps = {\n as: FormField,\n control: Select\n};\nexport default FormSelect;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _invoke from \"lodash-es/invoke\";\nimport _get from \"lodash-es/get\";\nimport { Ref } from '@fluentui/react-component-ref';\nimport PropTypes from 'prop-types';\nimport React, { Component, createRef } from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\n/**\n * A TextArea can be used to allow for extended user input.\n * @see Form\n */\n\nvar TextArea = /*#__PURE__*/function (_Component) {\n _inheritsLoose(TextArea, _Component);\n\n function TextArea() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.ref = /*#__PURE__*/createRef();\n\n _this.focus = function () {\n return _this.ref.current.focus();\n };\n\n _this.handleChange = function (e) {\n var value = _get(e, 'target.value');\n\n _invoke(_this.props, 'onChange', e, _extends({}, _this.props, {\n value: value\n }));\n };\n\n _this.handleInput = function (e) {\n var value = _get(e, 'target.value');\n\n _invoke(_this.props, 'onInput', e, _extends({}, _this.props, {\n value: value\n }));\n };\n\n return _this;\n }\n\n var _proto = TextArea.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n rows = _this$props.rows,\n value = _this$props.value;\n var rest = getUnhandledProps(TextArea, this.props);\n var ElementType = getElementType(TextArea, this.props);\n return /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.ref\n }, /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n onChange: this.handleChange,\n onInput: this.handleInput,\n rows: rows,\n value: value\n })));\n };\n\n return TextArea;\n}(Component);\n\nTextArea.handledProps = [\"as\", \"onChange\", \"onInput\", \"rows\", \"value\"];\nTextArea.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /**\n * Called on change.\n * @param {SyntheticEvent} event - The React SyntheticEvent object\n * @param {object} data - All props and the event value.\n */\n onChange: PropTypes.func,\n\n /**\n * Called on input.\n * @param {SyntheticEvent} event - The React SyntheticEvent object\n * @param {object} data - All props and the event value.\n */\n onInput: PropTypes.func,\n\n /** Indicates row count for a TextArea. */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** The value of the textarea. */\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n} : {};\nTextArea.defaultProps = {\n as: 'textarea',\n rows: 3\n};\nexport default TextArea;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\nimport TextArea from '../../addons/TextArea';\nimport FormField from './FormField';\n/**\n * Sugar for <Form.Field control={TextArea} />.\n * @see Form\n * @see TextArea\n */\n\nfunction FormTextArea(props) {\n var control = props.control;\n var rest = getUnhandledProps(FormTextArea, props);\n var ElementType = getElementType(FormTextArea, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n control: control\n }));\n}\n\nFormTextArea.handledProps = [\"as\", \"control\"];\nFormTextArea.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A FormField control prop. */\n control: FormField.propTypes.control\n} : {};\nFormTextArea.defaultProps = {\n as: FormField,\n control: TextArea\n};\nexport default FormTextArea;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _without from \"lodash-es/without\";\nimport _invoke from \"lodash-es/invoke\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { getElementType, getUnhandledProps, SUI, useKeyOnly, useWidthProp } from '../../lib';\nimport FormButton from './FormButton';\nimport FormCheckbox from './FormCheckbox';\nimport FormDropdown from './FormDropdown';\nimport FormField from './FormField';\nimport FormGroup from './FormGroup';\nimport FormInput from './FormInput';\nimport FormRadio from './FormRadio';\nimport FormSelect from './FormSelect';\nimport FormTextArea from './FormTextArea';\n/**\n * A Form displays a set of related user input fields in a structured way.\n * @see Button\n * @see Checkbox\n * @see Dropdown\n * @see Input\n * @see Message\n * @see Radio\n * @see Select\n * @see Visibility\n */\n\nvar Form = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Form, _Component);\n\n function Form() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(_args)) || this;\n\n _this.handleSubmit = function (e) {\n var action = _this.props.action; // Heads up! Third party libs can pass own data as first argument, we need to check that it has preventDefault()\n // method.\n\n if (typeof action !== 'string') _invoke(e, 'preventDefault');\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _invoke.apply(void 0, [_this.props, 'onSubmit', e, _this.props].concat(args));\n };\n\n return _this;\n }\n\n var _proto = Form.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n action = _this$props.action,\n children = _this$props.children,\n className = _this$props.className,\n error = _this$props.error,\n inverted = _this$props.inverted,\n loading = _this$props.loading,\n reply = _this$props.reply,\n size = _this$props.size,\n success = _this$props.success,\n unstackable = _this$props.unstackable,\n warning = _this$props.warning,\n widths = _this$props.widths;\n var classes = cx('ui', size, useKeyOnly(error, 'error'), useKeyOnly(inverted, 'inverted'), useKeyOnly(loading, 'loading'), useKeyOnly(reply, 'reply'), useKeyOnly(success, 'success'), useKeyOnly(unstackable, 'unstackable'), useKeyOnly(warning, 'warning'), useWidthProp(widths, null, true), 'form', className);\n var rest = getUnhandledProps(Form, this.props);\n var ElementType = getElementType(Form, this.props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n action: action,\n className: classes,\n onSubmit: this.handleSubmit\n }), children);\n };\n\n return Form;\n}(Component);\n\nForm.handledProps = [\"action\", \"as\", \"children\", \"className\", \"error\", \"inverted\", \"loading\", \"onSubmit\", \"reply\", \"size\", \"success\", \"unstackable\", \"warning\", \"widths\"];\nForm.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** The HTML form action */\n action: PropTypes.string,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Automatically show any error Message children. */\n error: PropTypes.bool,\n\n /** A form can have its color inverted for contrast. */\n inverted: PropTypes.bool,\n\n /** Automatically show a loading indicator. */\n loading: PropTypes.bool,\n\n /** The HTML form submit handler. */\n onSubmit: PropTypes.func,\n\n /** A comment can contain a form to reply to a comment. This may have arbitrary content. */\n reply: PropTypes.bool,\n\n /** A form can vary in size. */\n size: PropTypes.oneOf(_without(SUI.SIZES, 'medium')),\n\n /** Automatically show any success Message children. */\n success: PropTypes.bool,\n\n /** A form can prevent itself from stacking on mobile. */\n unstackable: PropTypes.bool,\n\n /** Automatically show any warning Message children. */\n warning: PropTypes.bool,\n\n /** Forms can automatically divide fields to be equal width. */\n widths: PropTypes.oneOf(['equal'])\n} : {};\nForm.defaultProps = {\n as: 'form'\n};\nForm.Field = FormField;\nForm.Button = FormButton;\nForm.Checkbox = FormCheckbox;\nForm.Dropdown = FormDropdown;\nForm.Group = FormGroup;\nForm.Input = FormInput;\nForm.Radio = FormRadio;\nForm.Select = FormSelect;\nForm.TextArea = FormTextArea;\nexport default Form;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useMultipleProp, useTextAlignProp, useVerticalAlignProp, useWidthProp } from '../../lib';\n/**\n * A row sub-component for Grid.\n */\n\nfunction GridRow(props) {\n var centered = props.centered,\n children = props.children,\n className = props.className,\n color = props.color,\n columns = props.columns,\n divided = props.divided,\n only = props.only,\n reversed = props.reversed,\n stretched = props.stretched,\n textAlign = props.textAlign,\n verticalAlign = props.verticalAlign;\n var classes = cx(color, useKeyOnly(centered, 'centered'), useKeyOnly(divided, 'divided'), useKeyOnly(stretched, 'stretched'), useMultipleProp(only, 'only'), useMultipleProp(reversed, 'reversed'), useTextAlignProp(textAlign), useVerticalAlignProp(verticalAlign), useWidthProp(columns, 'column', true), 'row', className);\n var rest = getUnhandledProps(GridRow, props);\n var ElementType = getElementType(GridRow, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), children);\n}\n\nGridRow.handledProps = [\"as\", \"centered\", \"children\", \"className\", \"color\", \"columns\", \"divided\", \"only\", \"reversed\", \"stretched\", \"textAlign\", \"verticalAlign\"];\nGridRow.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A row can have its columns centered. */\n centered: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** A grid row can be colored. */\n color: PropTypes.oneOf(SUI.COLORS),\n\n /** Represents column count per line in Row. */\n columns: PropTypes.oneOf([].concat(SUI.WIDTHS, ['equal'])),\n\n /** A row can have dividers between its columns. */\n divided: PropTypes.bool,\n\n /** A row can appear only for a specific device, or screen sizes. */\n only: customPropTypes.multipleProp(SUI.VISIBILITY),\n\n /** A row can specify that its columns should reverse order at different device sizes. */\n reversed: customPropTypes.multipleProp(['computer', 'computer vertically', 'mobile', 'mobile vertically', 'tablet', 'tablet vertically']),\n\n /** A row can stretch its contents to take up the entire column height. */\n stretched: PropTypes.bool,\n\n /** A row can specify its text alignment. */\n textAlign: PropTypes.oneOf(SUI.TEXT_ALIGNMENTS),\n\n /** A row can specify its vertical alignment to have all its columns vertically centered. */\n verticalAlign: PropTypes.oneOf(SUI.VERTICAL_ALIGNMENTS)\n} : {};\nexport default GridRow;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useKeyOrValueAndKey, useMultipleProp, useTextAlignProp, useVerticalAlignProp, useWidthProp } from '../../lib';\nimport GridColumn from './GridColumn';\nimport GridRow from './GridRow';\n/**\n * A grid is used to harmonize negative space in a layout.\n */\n\nfunction Grid(props) {\n var celled = props.celled,\n centered = props.centered,\n children = props.children,\n className = props.className,\n columns = props.columns,\n container = props.container,\n divided = props.divided,\n doubling = props.doubling,\n inverted = props.inverted,\n padded = props.padded,\n relaxed = props.relaxed,\n reversed = props.reversed,\n stackable = props.stackable,\n stretched = props.stretched,\n textAlign = props.textAlign,\n verticalAlign = props.verticalAlign;\n var classes = cx('ui', useKeyOnly(centered, 'centered'), useKeyOnly(container, 'container'), useKeyOnly(doubling, 'doubling'), useKeyOnly(inverted, 'inverted'), useKeyOnly(stackable, 'stackable'), useKeyOnly(stretched, 'stretched'), useKeyOrValueAndKey(celled, 'celled'), useKeyOrValueAndKey(divided, 'divided'), useKeyOrValueAndKey(padded, 'padded'), useKeyOrValueAndKey(relaxed, 'relaxed'), useMultipleProp(reversed, 'reversed'), useTextAlignProp(textAlign), useVerticalAlignProp(verticalAlign), useWidthProp(columns, 'column', true), 'grid', className);\n var rest = getUnhandledProps(Grid, props);\n var ElementType = getElementType(Grid, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), children);\n}\n\nGrid.handledProps = [\"as\", \"celled\", \"centered\", \"children\", \"className\", \"columns\", \"container\", \"divided\", \"doubling\", \"inverted\", \"padded\", \"relaxed\", \"reversed\", \"stackable\", \"stretched\", \"textAlign\", \"verticalAlign\"];\nGrid.Column = GridColumn;\nGrid.Row = GridRow;\nGrid.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A grid can have rows divided into cells. */\n celled: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['internally'])]),\n\n /** A grid can have its columns centered. */\n centered: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Represents column count per row in Grid. */\n columns: PropTypes.oneOf([].concat(SUI.WIDTHS, ['equal'])),\n\n /** A grid can be combined with a container to use the available layout and alignment. */\n container: PropTypes.bool,\n\n /** A grid can have dividers between its columns. */\n divided: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['vertically'])]),\n\n /** A grid can double its column width on tablet and mobile sizes. */\n doubling: PropTypes.bool,\n\n /** A grid's colors can be inverted. */\n inverted: PropTypes.bool,\n\n /** A grid can preserve its vertical and horizontal gutters on first and last columns. */\n padded: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['horizontally', 'vertically'])]),\n\n /** A grid can increase its gutters to allow for more negative space. */\n relaxed: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['very'])]),\n\n /** A grid can specify that its columns should reverse order at different device sizes. */\n reversed: customPropTypes.multipleProp(['computer', 'computer vertically', 'mobile', 'mobile vertically', 'tablet', 'tablet vertically']),\n\n /** A grid can have its columns stack on-top of each other after reaching mobile breakpoints. */\n stackable: PropTypes.bool,\n\n /** A grid can stretch its contents to take up the entire grid height. */\n stretched: PropTypes.bool,\n\n /** A grid can specify its text alignment. */\n textAlign: PropTypes.oneOf(SUI.TEXT_ALIGNMENTS),\n\n /** A grid can specify its vertical alignment to have all its columns vertically centered. */\n verticalAlign: PropTypes.oneOf(SUI.VERTICAL_ALIGNMENTS)\n} : {};\nexport default Grid;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { customPropTypes, createShorthandFactory, getElementType, getUnhandledProps, SUI, useKeyOnly, useMultipleProp, useTextAlignProp, useValueAndKey, useVerticalAlignProp, useWidthProp } from '../../lib';\n/**\n * A column sub-component for Grid.\n */\n\nfunction GridColumn(props) {\n var children = props.children,\n className = props.className,\n computer = props.computer,\n color = props.color,\n floated = props.floated,\n largeScreen = props.largeScreen,\n mobile = props.mobile,\n only = props.only,\n stretched = props.stretched,\n tablet = props.tablet,\n textAlign = props.textAlign,\n verticalAlign = props.verticalAlign,\n widescreen = props.widescreen,\n width = props.width;\n var classes = cx(color, useKeyOnly(stretched, 'stretched'), useMultipleProp(only, 'only'), useTextAlignProp(textAlign), useValueAndKey(floated, 'floated'), useVerticalAlignProp(verticalAlign), useWidthProp(computer, 'wide computer'), useWidthProp(largeScreen, 'wide large screen'), useWidthProp(mobile, 'wide mobile'), useWidthProp(tablet, 'wide tablet'), useWidthProp(widescreen, 'wide widescreen'), useWidthProp(width, 'wide'), 'column', className);\n var rest = getUnhandledProps(GridColumn, props);\n var ElementType = getElementType(GridColumn, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), children);\n}\n\nGridColumn.handledProps = [\"as\", \"children\", \"className\", \"color\", \"computer\", \"floated\", \"largeScreen\", \"mobile\", \"only\", \"stretched\", \"tablet\", \"textAlign\", \"verticalAlign\", \"widescreen\", \"width\"];\nGridColumn.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** A grid column can be colored. */\n color: PropTypes.oneOf(SUI.COLORS),\n\n /** A column can specify a width for a computer. */\n computer: customPropTypes.every([customPropTypes.disallow(['width']), PropTypes.oneOf(SUI.WIDTHS)]),\n\n /** A column can sit flush against the left or right edge of a row. */\n floated: PropTypes.oneOf(SUI.FLOATS),\n\n /** A column can specify a width for a large screen device. */\n largeScreen: customPropTypes.every([customPropTypes.disallow(['width']), PropTypes.oneOf(SUI.WIDTHS)]),\n\n /** A column can specify a width for a mobile device. */\n mobile: customPropTypes.every([customPropTypes.disallow(['width']), PropTypes.oneOf(SUI.WIDTHS)]),\n\n /** A column can appear only for a specific device, or screen sizes. */\n only: customPropTypes.multipleProp(SUI.VISIBILITY),\n\n /** A column can stretch its contents to take up the entire grid or row height. */\n stretched: PropTypes.bool,\n\n /** A column can specify a width for a tablet device. */\n tablet: customPropTypes.every([customPropTypes.disallow(['width']), PropTypes.oneOf(SUI.WIDTHS)]),\n\n /** A column can specify its text alignment. */\n textAlign: PropTypes.oneOf(SUI.TEXT_ALIGNMENTS),\n\n /** A column can specify its vertical alignment to have all its columns vertically centered. */\n verticalAlign: PropTypes.oneOf(SUI.VERTICAL_ALIGNMENTS),\n\n /** A column can specify a width for a wide screen device. */\n widescreen: customPropTypes.every([customPropTypes.disallow(['width']), PropTypes.oneOf(SUI.WIDTHS)]),\n\n /** Represents width of column. */\n width: customPropTypes.every([customPropTypes.disallow(['computer', 'largeScreen', 'mobile', 'tablet', 'widescreen']), PropTypes.oneOf(SUI.WIDTHS)])\n} : {};\nGridColumn.create = createShorthandFactory(GridColumn, function (children) {\n return {\n children: children\n };\n});\nexport default GridColumn;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, useKeyOnly } from '../../lib';\n/**\n * Used in some Button types, such as `animated`.\n */\n\nfunction ButtonContent(props) {\n var children = props.children,\n className = props.className,\n content = props.content,\n hidden = props.hidden,\n visible = props.visible;\n var classes = cx(useKeyOnly(visible, 'visible'), useKeyOnly(hidden, 'hidden'), 'content', className);\n var rest = getUnhandledProps(ButtonContent, props);\n var ElementType = getElementType(ButtonContent, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nButtonContent.handledProps = [\"as\", \"children\", \"className\", \"content\", \"hidden\", \"visible\"];\nButtonContent.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** Initially hidden, visible on hover. */\n hidden: PropTypes.bool,\n\n /** Initially visible, hidden on hover. */\n visible: PropTypes.bool\n} : {};\nexport default ButtonContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _map from \"lodash-es/map\";\nimport _isNil from \"lodash-es/isNil\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useKeyOrValueAndKey, useValueAndKey, useWidthProp } from '../../lib';\nimport Button from './Button';\n/**\n * Buttons can be grouped.\n */\n\nfunction ButtonGroup(props) {\n var attached = props.attached,\n basic = props.basic,\n buttons = props.buttons,\n children = props.children,\n className = props.className,\n color = props.color,\n compact = props.compact,\n content = props.content,\n floated = props.floated,\n fluid = props.fluid,\n icon = props.icon,\n inverted = props.inverted,\n labeled = props.labeled,\n negative = props.negative,\n positive = props.positive,\n primary = props.primary,\n secondary = props.secondary,\n size = props.size,\n toggle = props.toggle,\n vertical = props.vertical,\n widths = props.widths;\n var classes = cx('ui', color, size, useKeyOnly(basic, 'basic'), useKeyOnly(compact, 'compact'), useKeyOnly(fluid, 'fluid'), useKeyOnly(icon, 'icon'), useKeyOnly(inverted, 'inverted'), useKeyOnly(labeled, 'labeled'), useKeyOnly(negative, 'negative'), useKeyOnly(positive, 'positive'), useKeyOnly(primary, 'primary'), useKeyOnly(secondary, 'secondary'), useKeyOnly(toggle, 'toggle'), useKeyOnly(vertical, 'vertical'), useKeyOrValueAndKey(attached, 'attached'), useValueAndKey(floated, 'floated'), useWidthProp(widths), 'buttons', className);\n var rest = getUnhandledProps(ButtonGroup, props);\n var ElementType = getElementType(ButtonGroup, props);\n\n if (_isNil(buttons)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n }\n\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), _map(buttons, function (button) {\n return Button.create(button);\n }));\n}\n\nButtonGroup.handledProps = [\"as\", \"attached\", \"basic\", \"buttons\", \"children\", \"className\", \"color\", \"compact\", \"content\", \"floated\", \"fluid\", \"icon\", \"inverted\", \"labeled\", \"negative\", \"positive\", \"primary\", \"secondary\", \"size\", \"toggle\", \"vertical\", \"widths\"];\nButtonGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Groups can be attached to other content. */\n attached: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['left', 'right', 'top', 'bottom'])]),\n\n /** Groups can be less pronounced. */\n basic: PropTypes.bool,\n\n /** Array of shorthand Button values. */\n buttons: customPropTypes.collectionShorthand,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Groups can have a shared color. */\n color: PropTypes.oneOf(SUI.COLORS),\n\n /** Groups can reduce their padding to fit into tighter spaces. */\n compact: PropTypes.bool,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** Groups can be aligned to the left or right of its container. */\n floated: PropTypes.oneOf(SUI.FLOATS),\n\n /** Groups can take the width of their container. */\n fluid: PropTypes.bool,\n\n /** Groups can be formatted as icons. */\n icon: PropTypes.bool,\n\n /** Groups can be formatted to appear on dark backgrounds. */\n inverted: PropTypes.bool,\n\n /** Groups can be formatted as labeled icon buttons. */\n labeled: PropTypes.bool,\n\n /** Groups can hint towards a negative consequence. */\n negative: PropTypes.bool,\n\n /** Groups can hint towards a positive consequence. */\n positive: PropTypes.bool,\n\n /** Groups can be formatted to show different levels of emphasis. */\n primary: PropTypes.bool,\n\n /** Groups can be formatted to show different levels of emphasis. */\n secondary: PropTypes.bool,\n\n /** Groups can have different sizes. */\n size: PropTypes.oneOf(SUI.SIZES),\n\n /** Groups can be formatted to toggle on and off. */\n toggle: PropTypes.bool,\n\n /** Groups can be formatted to appear vertically. */\n vertical: PropTypes.bool,\n\n /** Groups can have their widths divided evenly. */\n widths: PropTypes.oneOf(SUI.WIDTHS)\n} : {};\nexport default ButtonGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\n/**\n * Button groups can contain conditionals.\n */\n\nfunction ButtonOr(props) {\n var className = props.className,\n text = props.text;\n var classes = cx('or', className);\n var rest = getUnhandledProps(ButtonOr, props);\n var ElementType = getElementType(ButtonOr, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes,\n \"data-text\": text\n }));\n}\n\nButtonOr.handledProps = [\"as\", \"className\", \"text\"];\nButtonOr.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Or buttons can have their text localized, or adjusted by using the text prop. */\n text: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n} : {};\nexport default ButtonOr;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _invoke from \"lodash-es/invoke\";\nimport _isNil from \"lodash-es/isNil\";\nimport { Ref } from '@fluentui/react-component-ref';\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component, createRef } from 'react';\nimport { childrenUtils, customPropTypes, createShorthandFactory, getElementType, getUnhandledProps, SUI, useKeyOnly, useKeyOrValueAndKey, useValueAndKey } from '../../lib';\nimport Icon from '../Icon/Icon';\nimport Label from '../Label/Label';\nimport ButtonContent from './ButtonContent';\nimport ButtonGroup from './ButtonGroup';\nimport ButtonOr from './ButtonOr';\n/**\n * A Button indicates a possible user action.\n * @see Form\n * @see Icon\n * @see Label\n */\n\nvar Button = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Button, _Component);\n\n function Button() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.ref = /*#__PURE__*/createRef();\n\n _this.computeElementType = function () {\n var _this$props = _this.props,\n attached = _this$props.attached,\n label = _this$props.label;\n if (!_isNil(attached) || !_isNil(label)) return 'div';\n };\n\n _this.computeTabIndex = function (ElementType) {\n var _this$props2 = _this.props,\n disabled = _this$props2.disabled,\n tabIndex = _this$props2.tabIndex;\n if (!_isNil(tabIndex)) return tabIndex;\n if (disabled) return -1;\n if (ElementType === 'div') return 0;\n };\n\n _this.focus = function (options) {\n return _invoke(_this.ref.current, 'focus', options);\n };\n\n _this.handleClick = function (e) {\n var disabled = _this.props.disabled;\n\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n _invoke(_this.props, 'onClick', e, _this.props);\n };\n\n _this.hasIconClass = function () {\n var _this$props3 = _this.props,\n labelPosition = _this$props3.labelPosition,\n children = _this$props3.children,\n content = _this$props3.content,\n icon = _this$props3.icon;\n if (icon === true) return true;\n return icon && (labelPosition || childrenUtils.isNil(children) && _isNil(content));\n };\n\n return _this;\n }\n\n var _proto = Button.prototype;\n\n _proto.computeButtonAriaRole = function computeButtonAriaRole(ElementType) {\n var role = this.props.role;\n if (!_isNil(role)) return role;\n if (ElementType !== 'button') return 'button';\n };\n\n _proto.render = function render() {\n var _this$props4 = this.props,\n active = _this$props4.active,\n animated = _this$props4.animated,\n attached = _this$props4.attached,\n basic = _this$props4.basic,\n children = _this$props4.children,\n circular = _this$props4.circular,\n className = _this$props4.className,\n color = _this$props4.color,\n compact = _this$props4.compact,\n content = _this$props4.content,\n disabled = _this$props4.disabled,\n floated = _this$props4.floated,\n fluid = _this$props4.fluid,\n icon = _this$props4.icon,\n inverted = _this$props4.inverted,\n label = _this$props4.label,\n labelPosition = _this$props4.labelPosition,\n loading = _this$props4.loading,\n negative = _this$props4.negative,\n positive = _this$props4.positive,\n primary = _this$props4.primary,\n secondary = _this$props4.secondary,\n size = _this$props4.size,\n toggle = _this$props4.toggle,\n type = _this$props4.type;\n var baseClasses = cx(color, size, useKeyOnly(active, 'active'), useKeyOnly(basic, 'basic'), useKeyOnly(circular, 'circular'), useKeyOnly(compact, 'compact'), useKeyOnly(fluid, 'fluid'), useKeyOnly(this.hasIconClass(), 'icon'), useKeyOnly(inverted, 'inverted'), useKeyOnly(loading, 'loading'), useKeyOnly(negative, 'negative'), useKeyOnly(positive, 'positive'), useKeyOnly(primary, 'primary'), useKeyOnly(secondary, 'secondary'), useKeyOnly(toggle, 'toggle'), useKeyOrValueAndKey(animated, 'animated'), useKeyOrValueAndKey(attached, 'attached'));\n var labeledClasses = cx(useKeyOrValueAndKey(labelPosition || !!label, 'labeled'));\n var wrapperClasses = cx(useKeyOnly(disabled, 'disabled'), useValueAndKey(floated, 'floated'));\n var rest = getUnhandledProps(Button, this.props);\n var ElementType = getElementType(Button, this.props, this.computeElementType);\n var tabIndex = this.computeTabIndex(ElementType);\n\n if (!_isNil(label)) {\n var buttonClasses = cx('ui', baseClasses, 'button', className);\n var containerClasses = cx('ui', labeledClasses, 'button', className, wrapperClasses);\n var labelElement = Label.create(label, {\n defaultProps: {\n basic: true,\n pointing: labelPosition === 'left' ? 'right' : 'left'\n },\n autoGenerateKey: false\n });\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: containerClasses,\n onClick: this.handleClick\n }), labelPosition === 'left' && labelElement, /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.ref\n }, /*#__PURE__*/React.createElement(\"button\", {\n className: buttonClasses,\n \"aria-pressed\": toggle ? !!active : undefined,\n disabled: disabled,\n type: type,\n tabIndex: tabIndex\n }, Icon.create(icon, {\n autoGenerateKey: false\n }), \" \", content)), (labelPosition === 'right' || !labelPosition) && labelElement);\n }\n\n var classes = cx('ui', baseClasses, wrapperClasses, labeledClasses, 'button', className);\n var hasChildren = !childrenUtils.isNil(children);\n var role = this.computeButtonAriaRole(ElementType);\n return /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.ref\n }, /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes,\n \"aria-pressed\": toggle ? !!active : undefined,\n disabled: disabled && ElementType === 'button' || undefined,\n onClick: this.handleClick,\n role: role,\n type: type,\n tabIndex: tabIndex\n }), hasChildren && children, !hasChildren && Icon.create(icon, {\n autoGenerateKey: false\n }), !hasChildren && content));\n };\n\n return Button;\n}(Component);\n\nButton.handledProps = [\"active\", \"animated\", \"as\", \"attached\", \"basic\", \"children\", \"circular\", \"className\", \"color\", \"compact\", \"content\", \"disabled\", \"floated\", \"fluid\", \"icon\", \"inverted\", \"label\", \"labelPosition\", \"loading\", \"negative\", \"onClick\", \"positive\", \"primary\", \"role\", \"secondary\", \"size\", \"tabIndex\", \"toggle\", \"type\"];\nButton.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A button can show it is currently the active user selection. */\n active: PropTypes.bool,\n\n /** A button can animate to show hidden content. */\n animated: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['fade', 'vertical'])]),\n\n /** A button can be attached to other content. */\n attached: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['left', 'right', 'top', 'bottom'])]),\n\n /** A basic button is less pronounced. */\n basic: PropTypes.bool,\n\n /** Primary content. */\n children: customPropTypes.every([PropTypes.node, customPropTypes.disallow(['label']), customPropTypes.givenProps({\n icon: PropTypes.oneOfType([PropTypes.string.isRequired, PropTypes.object.isRequired, PropTypes.element.isRequired])\n }, customPropTypes.disallow(['icon']))]),\n\n /** A button can be circular. */\n circular: PropTypes.bool,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** A button can have different colors */\n color: PropTypes.oneOf([].concat(SUI.COLORS, ['facebook', 'google plus', 'instagram', 'linkedin', 'twitter', 'vk', 'youtube'])),\n\n /** A button can reduce its padding to fit into tighter spaces. */\n compact: PropTypes.bool,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A button can show it is currently unable to be interacted with. */\n disabled: PropTypes.bool,\n\n /** A button can be aligned to the left or right of its container. */\n floated: PropTypes.oneOf(SUI.FLOATS),\n\n /** A button can take the width of its container. */\n fluid: PropTypes.bool,\n\n /** Add an Icon by name, props object, or pass an <Icon />. */\n icon: PropTypes.oneOfType([PropTypes.bool, PropTypes.string, PropTypes.object, PropTypes.element]),\n\n /** A button can be formatted to appear on dark backgrounds. */\n inverted: PropTypes.bool,\n\n /** Add a Label by text, props object, or pass a <Label />. */\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.element]),\n\n /** A labeled button can format a Label or Icon to appear on the left or right. */\n labelPosition: PropTypes.oneOf(['right', 'left']),\n\n /** A button can show a loading indicator. */\n loading: PropTypes.bool,\n\n /** A button can hint towards a negative consequence. */\n negative: PropTypes.bool,\n\n /**\n * Called after user's click.\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClick: PropTypes.func,\n\n /** A button can hint towards a positive consequence. */\n positive: PropTypes.bool,\n\n /** A button can be formatted to show different levels of emphasis. */\n primary: PropTypes.bool,\n\n /** The role of the HTML element. */\n role: PropTypes.string,\n\n /** A button can be formatted to show different levels of emphasis. */\n secondary: PropTypes.bool,\n\n /** A button can have different sizes. */\n size: PropTypes.oneOf(SUI.SIZES),\n\n /** A button can receive focus. */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** A button can be formatted to toggle on and off. */\n toggle: PropTypes.bool,\n\n /** The type of the HTML element. */\n type: PropTypes.oneOf(['button', 'submit', 'reset'])\n} : {};\nButton.defaultProps = {\n as: 'button'\n};\nButton.Content = ButtonContent;\nButton.Group = ButtonGroup;\nButton.Or = ButtonOr;\nButton.create = createShorthandFactory(Button, function (value) {\n return {\n content: value\n };\n});\nexport default Button;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useTextAlignProp } from '../../lib';\n/**\n * A container limits content to a maximum width.\n */\n\nfunction Container(props) {\n var children = props.children,\n className = props.className,\n content = props.content,\n fluid = props.fluid,\n text = props.text,\n textAlign = props.textAlign;\n var classes = cx('ui', useKeyOnly(text, 'text'), useKeyOnly(fluid, 'fluid'), useTextAlignProp(textAlign), 'container', className);\n var rest = getUnhandledProps(Container, props);\n var ElementType = getElementType(Container, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nContainer.handledProps = [\"as\", \"children\", \"className\", \"content\", \"fluid\", \"text\", \"textAlign\"];\nContainer.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** Container has no maximum width. */\n fluid: PropTypes.bool,\n\n /** Reduce maximum width to more naturally accommodate text. */\n text: PropTypes.bool,\n\n /** Align container text. */\n textAlign: PropTypes.oneOf(SUI.TEXT_ALIGNMENTS)\n} : {};\nexport default Container;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, useKeyOnly } from '../../lib';\n/**\n * A dimmable sub-component for Dimmer.\n */\n\nfunction DimmerDimmable(props) {\n var blurring = props.blurring,\n className = props.className,\n children = props.children,\n content = props.content,\n dimmed = props.dimmed;\n var classes = cx(useKeyOnly(blurring, 'blurring'), useKeyOnly(dimmed, 'dimmed'), 'dimmable', className);\n var rest = getUnhandledProps(DimmerDimmable, props);\n var ElementType = getElementType(DimmerDimmable, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nDimmerDimmable.handledProps = [\"as\", \"blurring\", \"children\", \"className\", \"content\", \"dimmed\"];\nDimmerDimmable.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A dimmable element can blur its contents. */\n blurring: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** Controls whether or not the dim is displayed. */\n dimmed: PropTypes.bool\n} : {};\nexport default DimmerDimmable;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _invoke from \"lodash-es/invoke\";\nimport { Ref } from '@fluentui/react-component-ref';\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component, createRef } from 'react';\nimport { childrenUtils, customPropTypes, doesNodeContainClick, getElementType, getUnhandledProps, useKeyOnly, useVerticalAlignProp } from '../../lib';\n/**\n * An inner element for a Dimmer.\n */\n\nvar DimmerInner = /*#__PURE__*/function (_Component) {\n _inheritsLoose(DimmerInner, _Component);\n\n function DimmerInner() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.containerRef = /*#__PURE__*/createRef();\n _this.contentRef = /*#__PURE__*/createRef();\n\n _this.handleClick = function (e) {\n var contentRef = _this.contentRef.current;\n\n _invoke(_this.props, 'onClick', e, _this.props);\n\n if (contentRef && contentRef !== e.target && doesNodeContainClick(contentRef, e)) {\n return;\n }\n\n _invoke(_this.props, 'onClickOutside', e, _this.props);\n };\n\n return _this;\n }\n\n var _proto = DimmerInner.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var active = this.props.active;\n this.toggleStyles(active);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var currentActive = this.props.active;\n var prevActive = prevProps.active;\n if (prevActive !== currentActive) this.toggleStyles(currentActive);\n };\n\n _proto.toggleStyles = function toggleStyles(active) {\n var containerRef = this.containerRef.current;\n if (!containerRef || !containerRef.style) return;\n\n if (active) {\n containerRef.style.setProperty('display', 'flex', 'important');\n } else {\n containerRef.style.removeProperty('display');\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n active = _this$props.active,\n children = _this$props.children,\n className = _this$props.className,\n content = _this$props.content,\n disabled = _this$props.disabled,\n inverted = _this$props.inverted,\n page = _this$props.page,\n simple = _this$props.simple,\n verticalAlign = _this$props.verticalAlign;\n var classes = cx('ui', useKeyOnly(active, 'active transition visible'), useKeyOnly(disabled, 'disabled'), useKeyOnly(inverted, 'inverted'), useKeyOnly(page, 'page'), useKeyOnly(simple, 'simple'), useVerticalAlignProp(verticalAlign), 'dimmer', className);\n var rest = getUnhandledProps(DimmerInner, this.props);\n var ElementType = getElementType(DimmerInner, this.props);\n var childrenContent = childrenUtils.isNil(children) ? content : children;\n return /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.containerRef\n }, /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes,\n onClick: this.handleClick\n }), childrenContent && /*#__PURE__*/React.createElement(\"div\", {\n className: \"content\",\n ref: this.contentRef\n }, childrenContent)));\n };\n\n return DimmerInner;\n}(Component);\n\nDimmerInner.handledProps = [\"active\", \"as\", \"children\", \"className\", \"content\", \"disabled\", \"inverted\", \"onClick\", \"onClickOutside\", \"page\", \"simple\", \"verticalAlign\"];\nexport { DimmerInner as default };\nDimmerInner.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** An active dimmer will dim its parent container. */\n active: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A disabled dimmer cannot be activated */\n disabled: PropTypes.bool,\n\n /**\n * Called on click.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClick: PropTypes.func,\n\n /**\n * Handles click outside Dimmer's content, but inside Dimmer area.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClickOutside: PropTypes.func,\n\n /** A dimmer can be formatted to have its colors inverted. */\n inverted: PropTypes.bool,\n\n /** A dimmer can be formatted to be fixed to the page. */\n page: PropTypes.bool,\n\n /** A dimmer can be controlled with simple prop. */\n simple: PropTypes.bool,\n\n /** A dimmer can have its content top or bottom aligned. */\n verticalAlign: PropTypes.oneOf(['bottom', 'top'])\n} : {};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { createShorthandFactory, getUnhandledProps, isBrowser } from '../../lib';\nimport Portal from '../../addons/Portal';\nimport DimmerDimmable from './DimmerDimmable';\nimport DimmerInner from './DimmerInner';\n/**\n * A dimmer hides distractions to focus attention on particular content.\n */\n\nvar Dimmer = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Dimmer, _Component);\n\n function Dimmer() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.handlePortalMount = function () {\n if (!isBrowser()) return; // Heads up, IE doesn't support second argument in add()\n\n document.body.classList.add('dimmed');\n document.body.classList.add('dimmable');\n };\n\n _this.handlePortalUnmount = function () {\n if (!isBrowser()) return; // Heads up, IE doesn't support second argument in add()\n\n document.body.classList.remove('dimmed');\n document.body.classList.remove('dimmable');\n };\n\n return _this;\n }\n\n var _proto = Dimmer.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n active = _this$props.active,\n page = _this$props.page;\n var rest = getUnhandledProps(Dimmer, this.props);\n\n if (page) {\n return /*#__PURE__*/React.createElement(Portal, {\n closeOnEscape: false,\n closeOnDocumentClick: false,\n onMount: this.handlePortalMount,\n onUnmount: this.handlePortalUnmount,\n open: active,\n openOnTriggerClick: false\n }, /*#__PURE__*/React.createElement(DimmerInner, _extends({}, rest, {\n active: active,\n page: page\n })));\n }\n\n return /*#__PURE__*/React.createElement(DimmerInner, _extends({}, rest, {\n active: active,\n page: page\n }));\n };\n\n return Dimmer;\n}(Component);\n\nDimmer.handledProps = [\"active\", \"page\"];\nexport { Dimmer as default };\nDimmer.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An active dimmer will dim its parent container. */\n active: PropTypes.bool,\n\n /** A dimmer can be formatted to be fixed to the page. */\n page: PropTypes.bool\n} : {};\nDimmer.Dimmable = DimmerDimmable;\nDimmer.Inner = DimmerInner;\nDimmer.create = createShorthandFactory(Dimmer, function (value) {\n return {\n content: value\n };\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, SUI } from '../../lib';\n/**\n * A group of images.\n */\n\nfunction ImageGroup(props) {\n var children = props.children,\n className = props.className,\n content = props.content,\n size = props.size;\n var classes = cx('ui', size, className, 'images');\n var rest = getUnhandledProps(ImageGroup, props);\n var ElementType = getElementType(ImageGroup, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nImageGroup.handledProps = [\"as\", \"children\", \"className\", \"content\", \"size\"];\nImageGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A group of images can be formatted to have the same size. */\n size: PropTypes.oneOf(SUI.SIZES)\n} : {};\nexport default ImageGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _isNil from \"lodash-es/isNil\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps, htmlImageProps, partitionHTMLProps, SUI, useKeyOnly, useKeyOrValueAndKey, useValueAndKey, useVerticalAlignProp } from '../../lib';\nimport Dimmer from '../../modules/Dimmer';\nimport Label from '../Label/Label';\nimport ImageGroup from './ImageGroup';\n/**\n * An image is a graphic representation of something.\n * @see Icon\n */\n\nfunction Image(props) {\n var avatar = props.avatar,\n bordered = props.bordered,\n centered = props.centered,\n children = props.children,\n circular = props.circular,\n className = props.className,\n content = props.content,\n dimmer = props.dimmer,\n disabled = props.disabled,\n floated = props.floated,\n fluid = props.fluid,\n hidden = props.hidden,\n href = props.href,\n inline = props.inline,\n label = props.label,\n rounded = props.rounded,\n size = props.size,\n spaced = props.spaced,\n verticalAlign = props.verticalAlign,\n wrapped = props.wrapped,\n ui = props.ui;\n var classes = cx(useKeyOnly(ui, 'ui'), size, useKeyOnly(avatar, 'avatar'), useKeyOnly(bordered, 'bordered'), useKeyOnly(circular, 'circular'), useKeyOnly(centered, 'centered'), useKeyOnly(disabled, 'disabled'), useKeyOnly(fluid, 'fluid'), useKeyOnly(hidden, 'hidden'), useKeyOnly(inline, 'inline'), useKeyOnly(rounded, 'rounded'), useKeyOrValueAndKey(spaced, 'spaced'), useValueAndKey(floated, 'floated'), useVerticalAlignProp(verticalAlign, 'aligned'), 'image', className);\n var rest = getUnhandledProps(Image, props);\n\n var _partitionHTMLProps = partitionHTMLProps(rest, {\n htmlProps: htmlImageProps\n }),\n imgTagProps = _partitionHTMLProps[0],\n rootProps = _partitionHTMLProps[1];\n\n var ElementType = getElementType(Image, props, function () {\n if (!_isNil(dimmer) || !_isNil(label) || !_isNil(wrapped) || !childrenUtils.isNil(children)) {\n return 'div';\n }\n });\n\n if (!childrenUtils.isNil(children)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), children);\n }\n\n if (!childrenUtils.isNil(content)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), content);\n }\n\n if (ElementType === 'img') {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rootProps, imgTagProps, {\n className: classes\n }));\n }\n\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rootProps, {\n className: classes,\n href: href\n }), Dimmer.create(dimmer, {\n autoGenerateKey: false\n }), Label.create(label, {\n autoGenerateKey: false\n }), /*#__PURE__*/React.createElement(\"img\", imgTagProps));\n}\n\nImage.handledProps = [\"as\", \"avatar\", \"bordered\", \"centered\", \"children\", \"circular\", \"className\", \"content\", \"dimmer\", \"disabled\", \"floated\", \"fluid\", \"hidden\", \"href\", \"inline\", \"label\", \"rounded\", \"size\", \"spaced\", \"ui\", \"verticalAlign\", \"wrapped\"];\nImage.Group = ImageGroup;\nImage.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** An image may be formatted to appear inline with text as an avatar. */\n avatar: PropTypes.bool,\n\n /** An image may include a border to emphasize the edges of white or transparent content. */\n bordered: PropTypes.bool,\n\n /** An image can appear centered in a content block. */\n centered: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** An image may appear circular. */\n circular: PropTypes.bool,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** An image can show that it is disabled and cannot be selected. */\n disabled: PropTypes.bool,\n\n /** Shorthand for Dimmer. */\n dimmer: customPropTypes.itemShorthand,\n\n /** An image can sit to the left or right of other content. */\n floated: PropTypes.oneOf(SUI.FLOATS),\n\n /** An image can take up the width of its container. */\n fluid: customPropTypes.every([PropTypes.bool, customPropTypes.disallow(['size'])]),\n\n /** An image can be hidden. */\n hidden: PropTypes.bool,\n\n /** Renders the Image as an <a> tag with this href. */\n href: PropTypes.string,\n\n /** An image may appear inline. */\n inline: PropTypes.bool,\n\n /** Shorthand for Label. */\n label: customPropTypes.itemShorthand,\n\n /** An image may appear rounded. */\n rounded: PropTypes.bool,\n\n /** An image may appear at different sizes. */\n size: PropTypes.oneOf(SUI.SIZES),\n\n /** An image can specify that it needs an additional spacing to separate it from nearby content. */\n spaced: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['left', 'right'])]),\n\n /** Whether or not to add the ui className. */\n ui: PropTypes.bool,\n\n /** An image can specify its vertical alignment. */\n verticalAlign: PropTypes.oneOf(SUI.VERTICAL_ALIGNMENTS),\n\n /** An image can render wrapped in a `div.ui.image` as alternative HTML markup. */\n wrapped: PropTypes.bool\n} : {};\nImage.defaultProps = {\n as: 'img',\n ui: true\n};\nImage.create = createShorthandFactory(Image, function (value) {\n return {\n src: value\n };\n});\nexport default Image;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _includes from \"lodash-es/includes\";\nimport _map from \"lodash-es/map\";\nimport _invoke from \"lodash-es/invoke\";\nimport _get from \"lodash-es/get\";\nimport _isNil from \"lodash-es/isNil\";\nimport { handleRef } from '@fluentui/react-component-ref';\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Children, cloneElement, Component, createRef } from 'react';\nimport { childrenUtils, createHTMLInput, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps, partitionHTMLProps, useKeyOnly, useValueAndKey } from '../../lib';\nimport Button from '../Button';\nimport Icon from '../Icon';\nimport Label from '../Label';\n/**\n * An Input is a field used to elicit a response from a user.\n * @see Button\n * @see Form\n * @see Icon\n * @see Label\n */\n\nvar Input = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Input, _Component);\n\n function Input() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.inputRef = /*#__PURE__*/createRef();\n\n _this.computeIcon = function () {\n var _this$props = _this.props,\n loading = _this$props.loading,\n icon = _this$props.icon;\n if (!_isNil(icon)) return icon;\n if (loading) return 'spinner';\n };\n\n _this.computeTabIndex = function () {\n var _this$props2 = _this.props,\n disabled = _this$props2.disabled,\n tabIndex = _this$props2.tabIndex;\n if (!_isNil(tabIndex)) return tabIndex;\n if (disabled) return -1;\n };\n\n _this.focus = function (options) {\n return _this.inputRef.current.focus(options);\n };\n\n _this.select = function () {\n return _this.inputRef.current.select();\n };\n\n _this.handleChange = function (e) {\n var value = _get(e, 'target.value');\n\n _invoke(_this.props, 'onChange', e, _extends({}, _this.props, {\n value: value\n }));\n };\n\n _this.handleChildOverrides = function (child, defaultProps) {\n return _extends({}, defaultProps, child.props, {\n ref: function ref(c) {\n handleRef(child.ref, c);\n _this.inputRef.current = c;\n }\n });\n };\n\n _this.partitionProps = function () {\n var _this$props3 = _this.props,\n disabled = _this$props3.disabled,\n type = _this$props3.type;\n\n var tabIndex = _this.computeTabIndex();\n\n var unhandled = getUnhandledProps(Input, _this.props);\n\n var _partitionHTMLProps = partitionHTMLProps(unhandled),\n htmlInputProps = _partitionHTMLProps[0],\n rest = _partitionHTMLProps[1];\n\n return [_extends({}, htmlInputProps, {\n disabled: disabled,\n type: type,\n tabIndex: tabIndex,\n onChange: _this.handleChange,\n ref: _this.inputRef\n }), rest];\n };\n\n return _this;\n }\n\n var _proto = Input.prototype;\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props4 = this.props,\n action = _this$props4.action,\n actionPosition = _this$props4.actionPosition,\n children = _this$props4.children,\n className = _this$props4.className,\n disabled = _this$props4.disabled,\n error = _this$props4.error,\n fluid = _this$props4.fluid,\n focus = _this$props4.focus,\n icon = _this$props4.icon,\n iconPosition = _this$props4.iconPosition,\n input = _this$props4.input,\n inverted = _this$props4.inverted,\n label = _this$props4.label,\n labelPosition = _this$props4.labelPosition,\n loading = _this$props4.loading,\n size = _this$props4.size,\n transparent = _this$props4.transparent,\n type = _this$props4.type;\n var classes = cx('ui', size, useKeyOnly(disabled, 'disabled'), useKeyOnly(error, 'error'), useKeyOnly(fluid, 'fluid'), useKeyOnly(focus, 'focus'), useKeyOnly(inverted, 'inverted'), useKeyOnly(loading, 'loading'), useKeyOnly(transparent, 'transparent'), useValueAndKey(actionPosition, 'action') || useKeyOnly(action, 'action'), useValueAndKey(iconPosition, 'icon') || useKeyOnly(icon || loading, 'icon'), useValueAndKey(labelPosition, 'labeled') || useKeyOnly(label, 'labeled'), 'input', className);\n var ElementType = getElementType(Input, this.props);\n\n var _this$partitionProps = this.partitionProps(),\n htmlInputProps = _this$partitionProps[0],\n rest = _this$partitionProps[1]; // Render with children\n // ----------------------------------------\n\n\n if (!childrenUtils.isNil(children)) {\n // add htmlInputProps to the `<input />` child\n var childElements = _map(Children.toArray(children), function (child) {\n if (child.type !== 'input') return child;\n return /*#__PURE__*/cloneElement(child, _this2.handleChildOverrides(child, htmlInputProps));\n });\n\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childElements);\n } // Render Shorthand\n // ----------------------------------------\n\n\n var actionElement = Button.create(action, {\n autoGenerateKey: false\n });\n var labelElement = Label.create(label, {\n defaultProps: {\n className: cx('label', // add 'left|right corner'\n _includes(labelPosition, 'corner') && labelPosition)\n },\n autoGenerateKey: false\n });\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), actionPosition === 'left' && actionElement, labelPosition !== 'right' && labelElement, createHTMLInput(input || type, {\n defaultProps: htmlInputProps,\n autoGenerateKey: false\n }), Icon.create(this.computeIcon(), {\n autoGenerateKey: false\n }), actionPosition !== 'left' && actionElement, labelPosition === 'right' && labelElement);\n };\n\n return Input;\n}(Component);\n\nInput.handledProps = [\"action\", \"actionPosition\", \"as\", \"children\", \"className\", \"disabled\", \"error\", \"fluid\", \"focus\", \"icon\", \"iconPosition\", \"input\", \"inverted\", \"label\", \"labelPosition\", \"loading\", \"onChange\", \"size\", \"tabIndex\", \"transparent\", \"type\"];\nInput.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** An Input can be formatted to alert the user to an action they may perform. */\n action: PropTypes.oneOfType([PropTypes.bool, customPropTypes.itemShorthand]),\n\n /** An action can appear along side an Input on the left or right. */\n actionPosition: PropTypes.oneOf(['left']),\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** An Input field can show that it is disabled. */\n disabled: PropTypes.bool,\n\n /** An Input field can show the data contains errors. */\n error: PropTypes.bool,\n\n /** Take on the size of its container. */\n fluid: PropTypes.bool,\n\n /** An Input field can show a user is currently interacting with it. */\n focus: PropTypes.bool,\n\n /** Optional Icon to display inside the Input. */\n icon: PropTypes.oneOfType([PropTypes.bool, customPropTypes.itemShorthand]),\n\n /** An Icon can appear inside an Input on the left or right. */\n iconPosition: PropTypes.oneOf(['left']),\n\n /** Shorthand for creating the HTML Input. */\n input: customPropTypes.itemShorthand,\n\n /** Format to appear on dark backgrounds. */\n inverted: PropTypes.bool,\n\n /** Optional Label to display along side the Input. */\n label: customPropTypes.itemShorthand,\n\n /** A Label can appear outside an Input on the left or right. */\n labelPosition: PropTypes.oneOf(['left', 'right', 'left corner', 'right corner']),\n\n /** An Icon Input field can show that it is currently loading data. */\n loading: PropTypes.bool,\n\n /**\n * Called on change.\n *\n * @param {ChangeEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props and a proposed value.\n */\n onChange: PropTypes.func,\n\n /** An Input can vary in size. */\n size: PropTypes.oneOf(['mini', 'small', 'large', 'big', 'huge', 'massive']),\n\n /** An Input can receive focus. */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** Transparent Input has no background. */\n transparent: PropTypes.bool,\n\n /** The HTML input type. */\n type: PropTypes.string\n} : {};\nInput.defaultProps = {\n type: 'text'\n};\nInput.create = createShorthandFactory(Input, function (type) {\n return {\n type: type\n };\n});\nexport default Input;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\n\nfunction LabelDetail(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var classes = cx('detail', className);\n var rest = getUnhandledProps(LabelDetail, props);\n var ElementType = getElementType(LabelDetail, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nLabelDetail.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nLabelDetail.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nLabelDetail.create = createShorthandFactory(LabelDetail, function (val) {\n return {\n content: val\n };\n});\nexport default LabelDetail;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly } from '../../lib';\n/**\n * A label can be grouped.\n */\n\nfunction LabelGroup(props) {\n var children = props.children,\n circular = props.circular,\n className = props.className,\n color = props.color,\n content = props.content,\n size = props.size,\n tag = props.tag;\n var classes = cx('ui', color, size, useKeyOnly(circular, 'circular'), useKeyOnly(tag, 'tag'), 'labels', className);\n var rest = getUnhandledProps(LabelGroup, props);\n var ElementType = getElementType(LabelGroup, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nLabelGroup.handledProps = [\"as\", \"children\", \"circular\", \"className\", \"color\", \"content\", \"size\", \"tag\"];\nLabelGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Labels can share shapes. */\n circular: PropTypes.bool,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Label group can share colors together. */\n color: PropTypes.oneOf(SUI.COLORS),\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** Label group can share sizes together. */\n size: PropTypes.oneOf(SUI.SIZES),\n\n /** Label group can share tag formatting. */\n tag: PropTypes.bool\n} : {};\nexport default LabelGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _isUndefined from \"lodash-es/isUndefined\";\nimport _invoke from \"lodash-es/invoke\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useKeyOrValueAndKey, useValueAndKey } from '../../lib';\nimport Icon from '../Icon/Icon';\nimport Image from '../Image/Image';\nimport LabelDetail from './LabelDetail';\nimport LabelGroup from './LabelGroup';\n/**\n * A label displays content classification.\n */\n\nvar Label = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Label, _Component);\n\n function Label() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.handleClick = function (e) {\n var onClick = _this.props.onClick;\n if (onClick) onClick(e, _this.props);\n };\n\n _this.handleIconOverrides = function (predefinedProps) {\n return {\n onClick: function onClick(e) {\n _invoke(predefinedProps, 'onClick', e);\n\n _invoke(_this.props, 'onRemove', e, _this.props);\n }\n };\n };\n\n return _this;\n }\n\n var _proto = Label.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n active = _this$props.active,\n attached = _this$props.attached,\n basic = _this$props.basic,\n children = _this$props.children,\n circular = _this$props.circular,\n className = _this$props.className,\n color = _this$props.color,\n content = _this$props.content,\n corner = _this$props.corner,\n detail = _this$props.detail,\n empty = _this$props.empty,\n floating = _this$props.floating,\n horizontal = _this$props.horizontal,\n icon = _this$props.icon,\n image = _this$props.image,\n onRemove = _this$props.onRemove,\n pointing = _this$props.pointing,\n prompt = _this$props.prompt,\n removeIcon = _this$props.removeIcon,\n ribbon = _this$props.ribbon,\n size = _this$props.size,\n tag = _this$props.tag;\n var pointingClass = pointing === true && 'pointing' || (pointing === 'left' || pointing === 'right') && pointing + \" pointing\" || (pointing === 'above' || pointing === 'below') && \"pointing \" + pointing;\n var classes = cx('ui', color, pointingClass, size, useKeyOnly(active, 'active'), useKeyOnly(basic, 'basic'), useKeyOnly(circular, 'circular'), useKeyOnly(empty, 'empty'), useKeyOnly(floating, 'floating'), useKeyOnly(horizontal, 'horizontal'), useKeyOnly(image === true, 'image'), useKeyOnly(prompt, 'prompt'), useKeyOnly(tag, 'tag'), useKeyOrValueAndKey(corner, 'corner'), useKeyOrValueAndKey(ribbon, 'ribbon'), useValueAndKey(attached, 'attached'), 'label', className);\n var rest = getUnhandledProps(Label, this.props);\n var ElementType = getElementType(Label, this.props);\n\n if (!childrenUtils.isNil(children)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes,\n onClick: this.handleClick\n }), children);\n }\n\n var removeIconShorthand = _isUndefined(removeIcon) ? 'delete' : removeIcon;\n return /*#__PURE__*/React.createElement(ElementType, _extends({\n className: classes,\n onClick: this.handleClick\n }, rest), Icon.create(icon, {\n autoGenerateKey: false\n }), typeof image !== 'boolean' && Image.create(image, {\n autoGenerateKey: false\n }), content, LabelDetail.create(detail, {\n autoGenerateKey: false\n }), onRemove && Icon.create(removeIconShorthand, {\n autoGenerateKey: false,\n overrideProps: this.handleIconOverrides\n }));\n };\n\n return Label;\n}(Component);\n\nLabel.handledProps = [\"active\", \"as\", \"attached\", \"basic\", \"children\", \"circular\", \"className\", \"color\", \"content\", \"corner\", \"detail\", \"empty\", \"floating\", \"horizontal\", \"icon\", \"image\", \"onClick\", \"onRemove\", \"pointing\", \"prompt\", \"removeIcon\", \"ribbon\", \"size\", \"tag\"];\nexport { Label as default };\nLabel.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A label can be active. */\n active: PropTypes.bool,\n\n /** A label can attach to a content segment. */\n attached: PropTypes.oneOf(['top', 'bottom', 'top right', 'top left', 'bottom left', 'bottom right']),\n\n /** A label can reduce its complexity. */\n basic: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** A label can be circular. */\n circular: PropTypes.bool,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Color of the label. */\n color: PropTypes.oneOf(SUI.COLORS),\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A label can position itself in the corner of an element. */\n corner: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['left', 'right'])]),\n\n /** Shorthand for LabelDetail. */\n detail: customPropTypes.itemShorthand,\n\n /** Formats the label as a dot. */\n empty: customPropTypes.every([PropTypes.bool, customPropTypes.demand(['circular'])]),\n\n /** Float above another element in the upper right corner. */\n floating: PropTypes.bool,\n\n /** A horizontal label is formatted to label content along-side it horizontally. */\n horizontal: PropTypes.bool,\n\n /** Shorthand for Icon. */\n icon: customPropTypes.itemShorthand,\n\n /** A label can be formatted to emphasize an image or prop can be used as shorthand for Image. */\n image: PropTypes.oneOfType([PropTypes.bool, customPropTypes.itemShorthand]),\n\n /**\n * Called on click.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClick: PropTypes.func,\n\n /**\n * Adds an \"x\" icon, called when \"x\" is clicked.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onRemove: PropTypes.func,\n\n /** A label can point to content next to it. */\n pointing: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['above', 'below', 'left', 'right'])]),\n\n /** A label can prompt for an error in your forms. */\n prompt: PropTypes.bool,\n\n /** Shorthand for Icon to appear as the last child and trigger onRemove. */\n removeIcon: customPropTypes.itemShorthand,\n\n /** A label can appear as a ribbon attaching itself to an element. */\n ribbon: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['right'])]),\n\n /** A label can have different sizes. */\n size: PropTypes.oneOf(SUI.SIZES),\n\n /** A label can appear as a tag. */\n tag: PropTypes.bool\n} : {};\nLabel.Detail = LabelDetail;\nLabel.Group = LabelGroup;\nLabel.create = createShorthandFactory(Label, function (value) {\n return {\n content: value\n };\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useKeyOrValueAndKey } from '../../lib';\n/**\n * A loader alerts a user to wait for an activity to complete.\n * @see Dimmer\n */\n\nfunction Loader(props) {\n var active = props.active,\n children = props.children,\n className = props.className,\n content = props.content,\n disabled = props.disabled,\n indeterminate = props.indeterminate,\n inline = props.inline,\n inverted = props.inverted,\n size = props.size;\n var classes = cx('ui', size, useKeyOnly(active, 'active'), useKeyOnly(disabled, 'disabled'), useKeyOnly(indeterminate, 'indeterminate'), useKeyOnly(inverted, 'inverted'), useKeyOnly(children || content, 'text'), useKeyOrValueAndKey(inline, 'inline'), 'loader', className);\n var rest = getUnhandledProps(Loader, props);\n var ElementType = getElementType(Loader, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nLoader.handledProps = [\"active\", \"as\", \"children\", \"className\", \"content\", \"disabled\", \"indeterminate\", \"inline\", \"inverted\", \"size\"];\nLoader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A loader can be active or visible. */\n active: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A loader can be disabled or hidden. */\n disabled: PropTypes.bool,\n\n /** A loader can show it's unsure of how long a task will take. */\n indeterminate: PropTypes.bool,\n\n /** Loaders can appear inline with content. */\n inline: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['centered'])]),\n\n /** Loaders can have their colors inverted. */\n inverted: PropTypes.bool,\n\n /** Loaders can have different sizes. */\n size: PropTypes.oneOf(SUI.SIZES)\n} : {};\nexport default Loader;","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","import identity from './identity.js';\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nexport default castFunction;\n","import arrayEach from './_arrayEach.js';\nimport baseEach from './_baseEach.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nexport default forEach;\n","import _includes from \"lodash-es/includes\";\nimport _forEach from \"lodash-es/forEach\";\nexport var htmlInputAttrs = [// REACT\n'selected', 'defaultValue', 'defaultChecked', // LIMITED HTML PROPS\n'accept', 'autoCapitalize', 'autoComplete', 'autoCorrect', 'autoFocus', 'checked', 'disabled', 'enterKeyHint', 'form', 'id', 'inputMode', 'lang', 'list', 'max', 'maxLength', 'min', 'minLength', 'multiple', 'name', 'pattern', 'placeholder', 'readOnly', 'required', 'step', 'title', 'type', 'value'];\nexport var htmlInputEvents = [// EVENTS\n// keyboard\n'onKeyDown', 'onKeyPress', 'onKeyUp', // focus\n'onFocus', 'onBlur', // form\n'onChange', 'onInput', // mouse\n'onClick', 'onContextMenu', 'onDrag', 'onDragEnd', 'onDragEnter', 'onDragExit', 'onDragLeave', 'onDragOver', 'onDragStart', 'onDrop', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', // selection\n'onSelect', // touch\n'onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart'];\nexport var htmlInputProps = [].concat(htmlInputAttrs, htmlInputEvents);\nexport var htmlImageProps = ['alt', 'height', 'src', 'srcSet', 'width', 'loading'];\n/**\n * Returns an array of objects consisting of: props of html input element and rest.\n * @param {object} props A ReactElement props object\n * @param {Object} [options={}]\n * @param {Array} [options.htmlProps] An array of html input props\n * @param {boolean} [options.includeAria] Includes all input props that starts with \"aria-\"\n * @returns {[{}, {}]} An array of objects\n */\n\nexport var partitionHTMLProps = function partitionHTMLProps(props, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$htmlProps = _options.htmlProps,\n htmlProps = _options$htmlProps === void 0 ? htmlInputProps : _options$htmlProps,\n _options$includeAria = _options.includeAria,\n includeAria = _options$includeAria === void 0 ? true : _options$includeAria;\n var inputProps = {};\n var rest = {};\n\n _forEach(props, function (val, prop) {\n var possibleAria = includeAria && (/^aria-.*$/.test(prop) || prop === 'role');\n var target = _includes(htmlProps, prop) || possibleAria ? inputProps : rest;\n target[prop] = val;\n });\n\n return [inputProps, rest];\n};","import baseSet from './_baseSet.js';\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nexport default set;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _set from \"lodash-es/set\";\nimport _invoke from \"lodash-es/invoke\";\nimport _get from \"lodash-es/get\";\nimport _isNil from \"lodash-es/isNil\";\nimport { Ref } from '@fluentui/react-component-ref';\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { createRef } from 'react';\nimport { ModernAutoControlledComponent as Component, createHTMLLabel, customPropTypes, getElementType, getUnhandledProps, htmlInputAttrs, partitionHTMLProps, useKeyOnly } from '../../lib';\n\n/**\n * A checkbox allows a user to select a value from a small set of options, often binary.\n * @see Form\n * @see Radio\n */\nvar Checkbox = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Checkbox, _Component);\n\n function Checkbox() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.inputRef = /*#__PURE__*/createRef();\n _this.labelRef = /*#__PURE__*/createRef();\n\n _this.canToggle = function () {\n var _this$props = _this.props,\n disabled = _this$props.disabled,\n radio = _this$props.radio,\n readOnly = _this$props.readOnly;\n var checked = _this.state.checked;\n return !disabled && !readOnly && !(radio && checked);\n };\n\n _this.computeTabIndex = function () {\n var _this$props2 = _this.props,\n disabled = _this$props2.disabled,\n tabIndex = _this$props2.tabIndex;\n if (!_isNil(tabIndex)) return tabIndex;\n return disabled ? -1 : 0;\n };\n\n _this.handleClick = function (e) {\n var id = _this.props.id;\n var _this$state = _this.state,\n checked = _this$state.checked,\n indeterminate = _this$state.indeterminate;\n\n var isInputClick = _invoke(_this.inputRef.current, 'contains', e.target);\n\n var isLabelClick = _invoke(_this.labelRef.current, 'contains', e.target);\n\n var isRootClick = !isLabelClick && !isInputClick;\n var hasId = !_isNil(id);\n var isLabelClickAndForwardedToInput = isLabelClick && hasId; // https://github.com/Semantic-Org/Semantic-UI-React/pull/3351\n\n if (!isLabelClickAndForwardedToInput) {\n _invoke(_this.props, 'onClick', e, _extends({}, _this.props, {\n checked: !checked,\n indeterminate: !!indeterminate\n }));\n }\n\n if (_this.isClickFromMouse) {\n _this.isClickFromMouse = false;\n\n if (isLabelClick && !hasId) {\n _this.handleChange(e);\n } // Changes should be triggered for the slider variation\n\n\n if (isRootClick) {\n _this.handleChange(e);\n }\n\n if (isLabelClick && hasId) {\n // To prevent two clicks from being fired from the component we have to stop the propagation\n // from the \"input\" click: https://github.com/Semantic-Org/Semantic-UI-React/issues/3433\n e.stopPropagation();\n }\n }\n };\n\n _this.handleChange = function (e) {\n var checked = _this.state.checked;\n if (!_this.canToggle()) return;\n\n _invoke(_this.props, 'onChange', e, _extends({}, _this.props, {\n checked: !checked,\n indeterminate: false\n }));\n\n _this.setState({\n checked: !checked,\n indeterminate: false\n });\n };\n\n _this.handleMouseDown = function (e) {\n var _this$state2 = _this.state,\n checked = _this$state2.checked,\n indeterminate = _this$state2.indeterminate;\n\n _invoke(_this.props, 'onMouseDown', e, _extends({}, _this.props, {\n checked: !!checked,\n indeterminate: !!indeterminate\n }));\n\n if (!e.defaultPrevented) {\n _invoke(_this.inputRef.current, 'focus');\n } // Heads up!\n // We need to call \"preventDefault\" to keep element focused.\n\n\n e.preventDefault();\n };\n\n _this.handleMouseUp = function (e) {\n var _this$state3 = _this.state,\n checked = _this$state3.checked,\n indeterminate = _this$state3.indeterminate;\n _this.isClickFromMouse = true;\n\n _invoke(_this.props, 'onMouseUp', e, _extends({}, _this.props, {\n checked: !!checked,\n indeterminate: !!indeterminate\n }));\n };\n\n _this.setIndeterminate = function () {\n var indeterminate = _this.state.indeterminate;\n\n _set(_this.inputRef, 'current.indeterminate', !!indeterminate);\n };\n\n return _this;\n }\n\n var _proto = Checkbox.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.setIndeterminate();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.setIndeterminate();\n };\n\n _proto.render = function render() {\n var _this$props3 = this.props,\n className = _this$props3.className,\n disabled = _this$props3.disabled,\n label = _this$props3.label,\n id = _this$props3.id,\n name = _this$props3.name,\n radio = _this$props3.radio,\n readOnly = _this$props3.readOnly,\n slider = _this$props3.slider,\n toggle = _this$props3.toggle,\n type = _this$props3.type,\n value = _this$props3.value;\n var _this$state4 = this.state,\n checked = _this$state4.checked,\n indeterminate = _this$state4.indeterminate;\n var classes = cx('ui', useKeyOnly(checked, 'checked'), useKeyOnly(disabled, 'disabled'), useKeyOnly(indeterminate, 'indeterminate'), // auto apply fitted class to compact white space when there is no label\n // https://semantic-ui.com/modules/checkbox.html#fitted\n useKeyOnly(_isNil(label), 'fitted'), useKeyOnly(radio, 'radio'), useKeyOnly(readOnly, 'read-only'), useKeyOnly(slider, 'slider'), useKeyOnly(toggle, 'toggle'), 'checkbox', className);\n var unhandled = getUnhandledProps(Checkbox, this.props);\n var ElementType = getElementType(Checkbox, this.props);\n\n var _partitionHTMLProps = partitionHTMLProps(unhandled, {\n htmlProps: htmlInputAttrs\n }),\n htmlInputProps = _partitionHTMLProps[0],\n rest = _partitionHTMLProps[1]; // Heads Up!\n // Do not remove empty labels, they are required by SUI CSS\n\n\n var labelElement = createHTMLLabel(label, {\n defaultProps: {\n htmlFor: id\n },\n autoGenerateKey: false\n }) || /*#__PURE__*/React.createElement(\"label\", {\n htmlFor: id\n });\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes,\n onClick: this.handleClick,\n onChange: this.handleChange,\n onMouseDown: this.handleMouseDown,\n onMouseUp: this.handleMouseUp\n }), /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.inputRef\n }, /*#__PURE__*/React.createElement(\"input\", _extends({}, htmlInputProps, {\n checked: checked,\n className: \"hidden\",\n disabled: disabled,\n id: id,\n name: name,\n readOnly: true,\n tabIndex: this.computeTabIndex(),\n type: type,\n value: value\n }))), /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.labelRef\n }, labelElement));\n };\n\n return Checkbox;\n}(Component);\n\nCheckbox.handledProps = [\"as\", \"checked\", \"className\", \"defaultChecked\", \"defaultIndeterminate\", \"disabled\", \"fitted\", \"id\", \"indeterminate\", \"label\", \"name\", \"onChange\", \"onClick\", \"onMouseDown\", \"onMouseUp\", \"radio\", \"readOnly\", \"slider\", \"tabIndex\", \"toggle\", \"type\", \"value\"];\nexport { Checkbox as default };\nCheckbox.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Whether or not checkbox is checked. */\n checked: PropTypes.bool,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** The initial value of checked. */\n defaultChecked: PropTypes.bool,\n\n /** Whether or not checkbox is indeterminate. */\n defaultIndeterminate: PropTypes.bool,\n\n /** A checkbox can appear disabled and be unable to change states */\n disabled: PropTypes.bool,\n\n /** Removes padding for a label. Auto applied when there is no label. */\n fitted: PropTypes.bool,\n\n /** A unique identifier. */\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** Whether or not checkbox is indeterminate. */\n indeterminate: PropTypes.bool,\n\n /** The text of the associated label element. */\n label: customPropTypes.itemShorthand,\n\n /** The HTML input name. */\n name: PropTypes.string,\n\n /**\n * Called when the user attempts to change the checked state.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props and proposed checked/indeterminate state.\n */\n onChange: PropTypes.func,\n\n /**\n * Called when the checkbox or label is clicked.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props and current checked/indeterminate state.\n */\n onClick: PropTypes.func,\n\n /**\n * Called when the user presses down on the mouse.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props and current checked/indeterminate state.\n */\n onMouseDown: PropTypes.func,\n\n /**\n * Called when the user releases the mouse.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props and current checked/indeterminate state.\n */\n onMouseUp: PropTypes.func,\n\n /** Format as a radio element. This means it is an exclusive option. */\n radio: customPropTypes.every([PropTypes.bool, customPropTypes.disallow(['slider', 'toggle'])]),\n\n /** A checkbox can be read-only and unable to change states. */\n readOnly: PropTypes.bool,\n\n /** Format to emphasize the current selection state. */\n slider: customPropTypes.every([PropTypes.bool, customPropTypes.disallow(['radio', 'toggle'])]),\n\n /** A checkbox can receive focus. */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** Format to show an on or off choice. */\n toggle: customPropTypes.every([PropTypes.bool, customPropTypes.disallow(['radio', 'slider'])]),\n\n /** HTML input type, either checkbox or radio. */\n type: PropTypes.oneOf(['checkbox', 'radio']),\n\n /** The HTML input value. */\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n} : {};\nCheckbox.defaultProps = {\n type: 'checkbox'\n};\nCheckbox.autoControlledProps = ['checked', 'indeterminate'];","/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default compact;\n","/**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\nfunction arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n}\n\nexport default arrayEvery;\n","import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\nfunction baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n}\n\nexport default baseEvery;\n","import arrayEvery from './_arrayEvery.js';\nimport baseEvery from './_baseEvery.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\nfunction every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default every;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport arrayMap from './_arrayMap.js';\nimport baseUnary from './_baseUnary.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseDifference;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","import baseDifference from './_baseDifference.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n});\n\nexport default without;\n","import baseIteratee from './_baseIteratee.js';\nimport isArrayLike from './isArrayLike.js';\nimport keys from './keys.js';\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nexport default createFind;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nexport default findIndex;\n","import createFind from './_createFind.js';\nimport findIndex from './findIndex.js';\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nexport default find;\n","import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\nfunction dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n}\n\nexport default dropRight;\n","import baseProperty from './_baseProperty.js';\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nexport default asciiSize;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nexport default unicodeSize;\n","import asciiSize from './_asciiSize.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeSize from './_unicodeSize.js';\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nexport default stringSize;\n","import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport stringSize from './_stringSize.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n}\n\nexport default size;\n","import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\nexport default difference;\n","import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nexport default union;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { PureComponent } from 'react';\nimport { createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\nexport var names = ['ad', 'andorra', 'ae', 'united arab emirates', 'uae', 'af', 'afghanistan', 'ag', 'antigua', 'ai', 'anguilla', 'al', 'albania', 'am', 'armenia', 'an', 'netherlands antilles', 'ao', 'angola', 'ar', 'argentina', 'as', 'american samoa', 'at', 'austria', 'au', 'australia', 'aw', 'aruba', 'ax', 'aland islands', 'az', 'azerbaijan', 'ba', 'bosnia', 'bb', 'barbados', 'bd', 'bangladesh', 'be', 'belgium', 'bf', 'burkina faso', 'bg', 'bulgaria', 'bh', 'bahrain', 'bi', 'burundi', 'bj', 'benin', 'bm', 'bermuda', 'bn', 'brunei', 'bo', 'bolivia', 'br', 'brazil', 'bs', 'bahamas', 'bt', 'bhutan', 'bv', 'bouvet island', 'bw', 'botswana', 'by', 'belarus', 'bz', 'belize', 'ca', 'canada', 'cc', 'cocos islands', 'cd', 'congo', 'cf', 'central african republic', 'cg', 'congo brazzaville', 'ch', 'switzerland', 'ci', 'cote divoire', 'ck', 'cook islands', 'cl', 'chile', 'cm', 'cameroon', 'cn', 'china', 'co', 'colombia', 'cr', 'costa rica', 'cs', 'cu', 'cuba', 'cv', 'cape verde', 'cx', 'christmas island', 'cy', 'cyprus', 'cz', 'czech republic', 'de', 'germany', 'dj', 'djibouti', 'dk', 'denmark', 'dm', 'dominica', 'do', 'dominican republic', 'dz', 'algeria', 'ec', 'ecuador', 'england', 'gb eng', 'ee', 'estonia', 'eg', 'egypt', 'eh', 'western sahara', 'er', 'eritrea', 'es', 'spain', 'et', 'ethiopia', 'eu', 'european union', 'fi', 'finland', 'fj', 'fiji', 'fk', 'falkland islands', 'fm', 'micronesia', 'fo', 'faroe islands', 'fr', 'france', 'ga', 'gabon', 'gb', 'uk', 'united kingdom', 'gd', 'grenada', 'ge', 'georgia', 'gf', 'french guiana', 'gh', 'ghana', 'gi', 'gibraltar', 'gl', 'greenland', 'gm', 'gambia', 'gn', 'guinea', 'gp', 'guadeloupe', 'gq', 'equatorial guinea', 'gr', 'greece', 'gs', 'sandwich islands', 'gt', 'guatemala', 'gu', 'guam', 'gw', 'guinea-bissau', 'gy', 'guyana', 'hk', 'hong kong', 'hm', 'heard island', 'hn', 'honduras', 'hr', 'croatia', 'ht', 'haiti', 'hu', 'hungary', 'id', 'indonesia', 'ie', 'ireland', 'il', 'israel', 'in', 'india', 'io', 'indian ocean territory', 'iq', 'iraq', 'ir', 'iran', 'is', 'iceland', 'it', 'italy', 'jm', 'jamaica', 'jo', 'jordan', 'jp', 'japan', 'ke', 'kenya', 'kg', 'kyrgyzstan', 'kh', 'cambodia', 'ki', 'kiribati', 'km', 'comoros', 'kn', 'saint kitts and nevis', 'kp', 'north korea', 'kr', 'south korea', 'kw', 'kuwait', 'ky', 'cayman islands', 'kz', 'kazakhstan', 'la', 'laos', 'lb', 'lebanon', 'lc', 'saint lucia', 'li', 'liechtenstein', 'lk', 'sri lanka', 'lr', 'liberia', 'ls', 'lesotho', 'lt', 'lithuania', 'lu', 'luxembourg', 'lv', 'latvia', 'ly', 'libya', 'ma', 'morocco', 'mc', 'monaco', 'md', 'moldova', 'me', 'montenegro', 'mg', 'madagascar', 'mh', 'marshall islands', 'mk', 'macedonia', 'ml', 'mali', 'mm', 'myanmar', 'burma', 'mn', 'mongolia', 'mo', 'macau', 'mp', 'northern mariana islands', 'mq', 'martinique', 'mr', 'mauritania', 'ms', 'montserrat', 'mt', 'malta', 'mu', 'mauritius', 'mv', 'maldives', 'mw', 'malawi', 'mx', 'mexico', 'my', 'malaysia', 'mz', 'mozambique', 'na', 'namibia', 'nc', 'new caledonia', 'ne', 'niger', 'nf', 'norfolk island', 'ng', 'nigeria', 'ni', 'nicaragua', 'nl', 'netherlands', 'no', 'norway', 'np', 'nepal', 'nr', 'nauru', 'nu', 'niue', 'nz', 'new zealand', 'om', 'oman', 'pa', 'panama', 'pe', 'peru', 'pf', 'french polynesia', 'pg', 'new guinea', 'ph', 'philippines', 'pk', 'pakistan', 'pl', 'poland', 'pm', 'saint pierre', 'pn', 'pitcairn islands', 'pr', 'puerto rico', 'ps', 'palestine', 'pt', 'portugal', 'pw', 'palau', 'py', 'paraguay', 'qa', 'qatar', 're', 'reunion', 'ro', 'romania', 'rs', 'serbia', 'ru', 'russia', 'rw', 'rwanda', 'sa', 'saudi arabia', 'sb', 'solomon islands', 'sc', 'seychelles', 'gb sct', 'scotland', 'sd', 'sudan', 'se', 'sweden', 'sg', 'singapore', 'sh', 'saint helena', 'si', 'slovenia', 'sj', 'svalbard', 'jan mayen', 'sk', 'slovakia', 'sl', 'sierra leone', 'sm', 'san marino', 'sn', 'senegal', 'so', 'somalia', 'sr', 'suriname', 'st', 'sao tome', 'sv', 'el salvador', 'sy', 'syria', 'sz', 'swaziland', 'tc', 'caicos islands', 'td', 'chad', 'tf', 'french territories', 'tg', 'togo', 'th', 'thailand', 'tj', 'tajikistan', 'tk', 'tokelau', 'tl', 'timorleste', 'tm', 'turkmenistan', 'tn', 'tunisia', 'to', 'tonga', 'tr', 'turkey', 'tt', 'trinidad', 'tv', 'tuvalu', 'tw', 'taiwan', 'tz', 'tanzania', 'ua', 'ukraine', 'ug', 'uganda', 'um', 'us minor islands', 'us', 'america', 'united states', 'uy', 'uruguay', 'uz', 'uzbekistan', 'va', 'vatican city', 'vc', 'saint vincent', 've', 'venezuela', 'vg', 'british virgin islands', 'vi', 'us virgin islands', 'vn', 'vietnam', 'vu', 'vanuatu', 'gb wls', 'wales', 'wf', 'wallis and futuna', 'ws', 'samoa', 'ye', 'yemen', 'yt', 'mayotte', 'za', 'south africa', 'zm', 'zambia', 'zw', 'zimbabwe'];\n/**\n * A flag is is used to represent a political state.\n */\n\nvar Flag = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(Flag, _PureComponent);\n\n function Flag() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n var _proto = Flag.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n className = _this$props.className,\n name = _this$props.name;\n var classes = cx(name, 'flag', className);\n var rest = getUnhandledProps(Flag, this.props);\n var ElementType = getElementType(Flag, this.props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }));\n };\n\n return Flag;\n}(PureComponent);\n\nFlag.handledProps = [\"as\", \"className\", \"name\"];\nFlag.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Flag name, can use the two digit country code, the full name, or a common alias. */\n name: customPropTypes.suggest(names)\n} : {};\nFlag.defaultProps = {\n as: 'i'\n};\nFlag.create = createShorthandFactory(Flag, function (value) {\n return {\n name: value\n };\n});\nexport default Flag;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\n/**\n * A dropdown menu can contain dividers to separate related content.\n */\n\nfunction DropdownDivider(props) {\n var className = props.className;\n var classes = cx('divider', className);\n var rest = getUnhandledProps(DropdownDivider, props);\n var ElementType = getElementType(DropdownDivider, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }));\n}\n\nDropdownDivider.handledProps = [\"as\", \"className\"];\nDropdownDivider.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Additional classes. */\n className: PropTypes.string\n} : {};\nexport default DropdownDivider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _isNil from \"lodash-es/isNil\";\nimport _invoke from \"lodash-es/invoke\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { childrenUtils, createShorthand, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps, useKeyOnly } from '../../lib';\nimport Flag from '../../elements/Flag';\nimport Icon from '../../elements/Icon';\nimport Image from '../../elements/Image';\nimport Label from '../../elements/Label';\n/**\n * An item sub-component for Dropdown component.\n */\n\nvar DropdownItem = /*#__PURE__*/function (_Component) {\n _inheritsLoose(DropdownItem, _Component);\n\n function DropdownItem() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.handleClick = function (e) {\n _invoke(_this.props, 'onClick', e, _this.props);\n };\n\n return _this;\n }\n\n var _proto = DropdownItem.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n active = _this$props.active,\n children = _this$props.children,\n className = _this$props.className,\n content = _this$props.content,\n disabled = _this$props.disabled,\n description = _this$props.description,\n flag = _this$props.flag,\n icon = _this$props.icon,\n image = _this$props.image,\n label = _this$props.label,\n selected = _this$props.selected,\n text = _this$props.text;\n var classes = cx(useKeyOnly(active, 'active'), useKeyOnly(disabled, 'disabled'), useKeyOnly(selected, 'selected'), 'item', className); // add default dropdown icon if item contains another menu\n\n var iconName = _isNil(icon) ? childrenUtils.someByType(children, 'DropdownMenu') && 'dropdown' : icon;\n var rest = getUnhandledProps(DropdownItem, this.props);\n var ElementType = getElementType(DropdownItem, this.props);\n var ariaOptions = {\n role: 'option',\n 'aria-disabled': disabled,\n 'aria-checked': active,\n 'aria-selected': selected\n };\n\n if (!childrenUtils.isNil(children)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, ariaOptions, {\n className: classes,\n onClick: this.handleClick\n }), children);\n }\n\n var flagElement = Flag.create(flag, {\n autoGenerateKey: false\n });\n var iconElement = Icon.create(iconName, {\n autoGenerateKey: false\n });\n var imageElement = Image.create(image, {\n autoGenerateKey: false\n });\n var labelElement = Label.create(label, {\n autoGenerateKey: false\n });\n var descriptionElement = createShorthand('span', function (val) {\n return {\n children: val\n };\n }, description, {\n defaultProps: {\n className: 'description'\n },\n autoGenerateKey: false\n });\n var textElement = createShorthand('span', function (val) {\n return {\n children: val\n };\n }, childrenUtils.isNil(content) ? text : content, {\n defaultProps: {\n className: 'text'\n },\n autoGenerateKey: false\n });\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, ariaOptions, {\n className: classes,\n onClick: this.handleClick\n }), imageElement, iconElement, flagElement, labelElement, descriptionElement, textElement);\n };\n\n return DropdownItem;\n}(Component);\n\nDropdownItem.handledProps = [\"active\", \"as\", \"children\", \"className\", \"content\", \"description\", \"disabled\", \"flag\", \"icon\", \"image\", \"label\", \"onClick\", \"selected\", \"text\", \"value\"];\nDropdownItem.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Style as the currently chosen item. */\n active: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** Additional text with less emphasis. */\n description: customPropTypes.itemShorthand,\n\n /** A dropdown item can be disabled. */\n disabled: PropTypes.bool,\n\n /** Shorthand for Flag. */\n flag: customPropTypes.itemShorthand,\n\n /** Shorthand for Icon. */\n icon: customPropTypes.itemShorthand,\n\n /** Shorthand for Image. */\n image: customPropTypes.itemShorthand,\n\n /** Shorthand for Label. */\n label: customPropTypes.itemShorthand,\n\n /**\n * Called on click.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClick: PropTypes.func,\n\n /**\n * The item currently selected by keyboard shortcut.\n * This is not the active item.\n */\n selected: PropTypes.bool,\n\n /** Display text. */\n text: customPropTypes.contentShorthand,\n\n /** Stored value. */\n value: PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string])\n} : {};\nDropdownItem.create = createShorthandFactory(DropdownItem, function (opts) {\n return opts;\n});\nexport default DropdownItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\nimport Icon from '../../elements/Icon';\n/**\n * A dropdown menu can contain a header.\n */\n\nfunction DropdownHeader(props) {\n var children = props.children,\n className = props.className,\n content = props.content,\n icon = props.icon;\n var classes = cx('header', className);\n var rest = getUnhandledProps(DropdownHeader, props);\n var ElementType = getElementType(DropdownHeader, props);\n\n if (!childrenUtils.isNil(children)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), children);\n }\n\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), Icon.create(icon, {\n autoGenerateKey: false\n }), content);\n}\n\nDropdownHeader.handledProps = [\"as\", \"children\", \"className\", \"content\", \"icon\"];\nDropdownHeader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function) */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** Shorthand for Icon. */\n icon: customPropTypes.itemShorthand\n} : {};\nDropdownHeader.create = createShorthandFactory(DropdownHeader, function (content) {\n return {\n content: content\n };\n});\nexport default DropdownHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, useKeyOnly } from '../../lib';\n/**\n * A dropdown menu can contain a menu.\n */\n\nfunction DropdownMenu(props) {\n var children = props.children,\n className = props.className,\n content = props.content,\n direction = props.direction,\n open = props.open,\n scrolling = props.scrolling;\n var classes = cx(direction, useKeyOnly(open, 'visible'), useKeyOnly(scrolling, 'scrolling'), 'menu transition', className);\n var rest = getUnhandledProps(DropdownMenu, props);\n var ElementType = getElementType(DropdownMenu, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nDropdownMenu.handledProps = [\"as\", \"children\", \"className\", \"content\", \"direction\", \"open\", \"scrolling\"];\nDropdownMenu.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A dropdown menu can open to the left or to the right. */\n direction: PropTypes.oneOf(['left', 'right']),\n\n /** Whether or not the dropdown menu is displayed. */\n open: PropTypes.bool,\n\n /** A dropdown menu can scroll. */\n scrolling: PropTypes.bool\n} : {};\nexport default DropdownMenu;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _invoke from \"lodash-es/invoke\";\nimport _get from \"lodash-es/get\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { createShorthandFactory, getUnhandledProps } from '../../lib';\n/**\n * A search item sub-component for Dropdown component.\n */\n\nvar DropdownSearchInput = /*#__PURE__*/function (_Component) {\n _inheritsLoose(DropdownSearchInput, _Component);\n\n function DropdownSearchInput() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.handleChange = function (e) {\n var value = _get(e, 'target.value');\n\n _invoke(_this.props, 'onChange', e, _extends({}, _this.props, {\n value: value\n }));\n };\n\n return _this;\n }\n\n var _proto = DropdownSearchInput.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n autoComplete = _this$props.autoComplete,\n className = _this$props.className,\n tabIndex = _this$props.tabIndex,\n type = _this$props.type,\n value = _this$props.value;\n var classes = cx('search', className);\n var rest = getUnhandledProps(DropdownSearchInput, this.props);\n return /*#__PURE__*/React.createElement(\"input\", _extends({}, rest, {\n \"aria-autocomplete\": \"list\",\n autoComplete: autoComplete,\n className: classes,\n onChange: this.handleChange,\n tabIndex: tabIndex,\n type: type,\n value: value\n }));\n };\n\n return DropdownSearchInput;\n}(Component);\n\nDropdownSearchInput.handledProps = [\"as\", \"autoComplete\", \"className\", \"tabIndex\", \"type\", \"value\"];\nDropdownSearchInput.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** An input can have the auto complete. */\n autoComplete: PropTypes.string,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** An input can receive focus. */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** The HTML input type. */\n type: PropTypes.string,\n\n /** Stored value. */\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n} : {};\nDropdownSearchInput.defaultProps = {\n autoComplete: 'off',\n type: 'text'\n};\nDropdownSearchInput.create = createShorthandFactory(DropdownSearchInput, function (type) {\n return {\n type: type\n };\n});\nexport default DropdownSearchInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\n/**\n * A dropdown contains a selected value.\n */\n\nfunction DropdownText(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var classes = cx('divider', className);\n var rest = getUnhandledProps(DropdownText, props);\n var ElementType = getElementType(DropdownText, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({\n \"aria-atomic\": true,\n \"aria-live\": \"polite\",\n role: \"alert\"\n }, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nDropdownText.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nDropdownText.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nDropdownText.create = createShorthandFactory(DropdownText, function (val) {\n return {\n content: val\n };\n});\nexport default DropdownText;","import toString from './toString.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n}\n\nexport default escapeRegExp;\n","import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nexport default baseFilter;\n","import arrayFilter from './_arrayFilter.js';\nimport baseFilter from './_baseFilter.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default filter;\n","import _some from \"lodash-es/some\";\nimport _escapeRegExp from \"lodash-es/escapeRegExp\";\nimport _deburr from \"lodash-es/deburr\";\nimport _isFunction from \"lodash-es/isFunction\";\nimport _includes from \"lodash-es/includes\";\nimport _filter from \"lodash-es/filter\";\nimport React from 'react'; // There are times when we need to calculate the options based on a value\n// that hasn't yet been persisted to state.\n\nexport default function getMenuOptions(config) {\n var additionLabel = config.additionLabel,\n additionPosition = config.additionPosition,\n allowAdditions = config.allowAdditions,\n deburr = config.deburr,\n multiple = config.multiple,\n options = config.options,\n search = config.search,\n searchQuery = config.searchQuery,\n value = config.value;\n var filteredOptions = options; // filter out active options\n\n if (multiple) {\n filteredOptions = _filter(filteredOptions, function (opt) {\n return !_includes(value, opt.value);\n });\n } // filter by search query\n\n\n if (search && searchQuery) {\n if (_isFunction(search)) {\n filteredOptions = search(filteredOptions, searchQuery);\n } else {\n // remove diacritics on search input and options, if deburr prop is set\n var strippedQuery = deburr ? _deburr(searchQuery) : searchQuery;\n var re = new RegExp(_escapeRegExp(strippedQuery), 'i');\n filteredOptions = _filter(filteredOptions, function (opt) {\n return re.test(deburr ? _deburr(opt.text) : opt.text);\n });\n }\n } // insert the \"add\" item\n\n\n if (allowAdditions && search && searchQuery && !_some(filteredOptions, {\n text: searchQuery\n })) {\n var additionLabelElement = /*#__PURE__*/React.isValidElement(additionLabel) ? /*#__PURE__*/React.cloneElement(additionLabel, {\n key: 'addition-label'\n }) : additionLabel || '';\n var addItem = {\n key: 'addition',\n // by using an array, we can pass multiple elements, but when doing so\n // we must specify a `key` for React to know which one is which\n text: [additionLabelElement, /*#__PURE__*/React.createElement(\"b\", {\n key: \"addition-query\"\n }, searchQuery)],\n value: searchQuery,\n className: 'addition',\n 'data-additional': true\n };\n if (additionPosition === 'top') filteredOptions.unshift(addItem);else filteredOptions.push(addItem);\n }\n\n return filteredOptions;\n}\ngetMenuOptions.handledProps = [];","import _includes from \"lodash-es/includes\";\nimport _find from \"lodash-es/find\";\nimport _findIndex from \"lodash-es/findIndex\";\nimport _reduce from \"lodash-es/reduce\";\nimport getMenuOptions from './getMenuOptions';\nexport default function getSelectedIndex(config) {\n var additionLabel = config.additionLabel,\n additionPosition = config.additionPosition,\n allowAdditions = config.allowAdditions,\n deburr = config.deburr,\n multiple = config.multiple,\n options = config.options,\n search = config.search,\n searchQuery = config.searchQuery,\n selectedIndex = config.selectedIndex,\n value = config.value;\n var menuOptions = getMenuOptions({\n value: value,\n options: options,\n searchQuery: searchQuery,\n additionLabel: additionLabel,\n additionPosition: additionPosition,\n allowAdditions: allowAdditions,\n deburr: deburr,\n multiple: multiple,\n search: search\n });\n\n var enabledIndexes = _reduce(menuOptions, function (memo, item, index) {\n if (!item.disabled) memo.push(index);\n return memo;\n }, []);\n\n var newSelectedIndex; // update the selected index\n\n if (!selectedIndex || selectedIndex < 0) {\n var firstIndex = enabledIndexes[0]; // Select the currently active item, if none, use the first item.\n // Multiple selects remove active items from the list,\n // their initial selected index should be 0.\n\n newSelectedIndex = multiple ? firstIndex : _findIndex(menuOptions, ['value', value]) || enabledIndexes[0];\n } else if (multiple) {\n newSelectedIndex = _find(enabledIndexes, function (index) {\n return index >= selectedIndex;\n }); // multiple selects remove options from the menu as they are made active\n // keep the selected index within range of the remaining items\n\n if (selectedIndex >= menuOptions.length - 1) {\n newSelectedIndex = enabledIndexes[enabledIndexes.length - 1];\n }\n } else {\n var activeIndex = _findIndex(menuOptions, ['value', value]); // regular selects can only have one active item\n // set the selected index to the currently active item\n\n\n newSelectedIndex = _includes(enabledIndexes, activeIndex) ? activeIndex : undefined;\n }\n\n if (!newSelectedIndex || newSelectedIndex < 0) {\n newSelectedIndex = enabledIndexes[0];\n }\n\n return newSelectedIndex;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _includes from \"lodash-es/includes\";\nimport _compact from \"lodash-es/compact\";\nimport _map from \"lodash-es/map\";\nimport _every from \"lodash-es/every\";\nimport _without from \"lodash-es/without\";\nimport _find from \"lodash-es/find\";\nimport _dropRight from \"lodash-es/dropRight\";\nimport _isEmpty from \"lodash-es/isEmpty\";\nimport _size from \"lodash-es/size\";\nimport _difference from \"lodash-es/difference\";\nimport _union from \"lodash-es/union\";\nimport _get from \"lodash-es/get\";\nimport _noop from \"lodash-es/noop\";\nimport _isUndefined from \"lodash-es/isUndefined\";\nimport _invoke from \"lodash-es/invoke\";\nimport _has from \"lodash-es/has\";\nimport _isEqual from \"lodash-es/isEqual\";\nimport _isFunction from \"lodash-es/isFunction\";\nimport _pick from \"lodash-es/pick\";\nimport _isNil from \"lodash-es/isNil\";\nimport EventStack from '@semantic-ui-react/event-stack';\nimport { Ref } from '@fluentui/react-component-ref';\nimport cx from 'clsx';\nimport keyboardKey from 'keyboard-key';\nimport PropTypes from 'prop-types';\nimport React, { Children, cloneElement, createRef } from 'react';\nimport shallowEqual from 'shallowequal';\nimport { ModernAutoControlledComponent as Component, childrenUtils, customPropTypes, doesNodeContainClick, getElementType, getUnhandledProps, objectDiff, useKeyOnly, useKeyOrValueAndKey } from '../../lib';\nimport Icon from '../../elements/Icon';\nimport Label from '../../elements/Label';\nimport Flag from '../../elements/Flag';\nimport Image from '../../elements/Image';\nimport DropdownDivider from './DropdownDivider';\nimport DropdownItem from './DropdownItem';\nimport DropdownHeader from './DropdownHeader';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownSearchInput from './DropdownSearchInput';\nimport DropdownText from './DropdownText';\nimport getMenuOptions from './utils/getMenuOptions';\nimport getSelectedIndex from './utils/getSelectedIndex';\n\nvar getKeyOrValue = function getKeyOrValue(key, value) {\n return _isNil(key) ? value : key;\n};\n\nvar getKeyAndValues = function getKeyAndValues(options) {\n return options ? options.map(function (option) {\n return _pick(option, ['key', 'value']);\n }) : options;\n};\n\nfunction renderItemContent(item) {\n var flag = item.flag,\n image = item.image,\n text = item.text; // TODO: remove this in v3\n // This maintains compatibility with Shorthand API in v1 as this might be called in \"Label.create()\"\n\n if (_isFunction(text)) {\n return text;\n }\n\n return {\n content: /*#__PURE__*/React.createElement(React.Fragment, null, Flag.create(flag), Image.create(image), text)\n };\n}\n/**\n * A dropdown allows a user to select a value from a series of options.\n * @see Form\n * @see Select\n * @see Menu\n */\n\n\nvar Dropdown = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Dropdown, _Component);\n\n function Dropdown() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.searchRef = /*#__PURE__*/createRef();\n _this.sizerRef = /*#__PURE__*/createRef();\n _this.ref = /*#__PURE__*/createRef();\n\n _this.handleChange = function (e, value) {\n _invoke(_this.props, 'onChange', e, _extends({}, _this.props, {\n value: value\n }));\n };\n\n _this.closeOnChange = function (e) {\n var _this$props = _this.props,\n closeOnChange = _this$props.closeOnChange,\n multiple = _this$props.multiple;\n var shouldClose = _isUndefined(closeOnChange) ? !multiple : closeOnChange;\n\n if (shouldClose) {\n _this.close(e, _noop);\n }\n };\n\n _this.closeOnEscape = function (e) {\n if (!_this.props.closeOnEscape) return;\n if (keyboardKey.getCode(e) !== keyboardKey.Escape) return;\n e.preventDefault();\n\n _this.close(e);\n };\n\n _this.moveSelectionOnKeyDown = function (e) {\n var _moves;\n\n var _this$props2 = _this.props,\n multiple = _this$props2.multiple,\n selectOnNavigation = _this$props2.selectOnNavigation;\n var open = _this.state.open;\n\n if (!open) {\n return;\n }\n\n var moves = (_moves = {}, _moves[keyboardKey.ArrowDown] = 1, _moves[keyboardKey.ArrowUp] = -1, _moves);\n var move = moves[keyboardKey.getCode(e)];\n\n if (move === undefined) {\n return;\n }\n\n e.preventDefault();\n\n var nextIndex = _this.getSelectedIndexAfterMove(move);\n\n if (!multiple && selectOnNavigation) {\n _this.makeSelectedItemActive(e, nextIndex);\n }\n\n _this.setState({\n selectedIndex: nextIndex\n });\n };\n\n _this.openOnSpace = function (e) {\n var _e$target, _e$target2, _e$target3;\n\n var shouldHandleEvent = _this.state.focus && !_this.state.open && keyboardKey.getCode(e) === keyboardKey.Spacebar;\n var shouldPreventDefault = ((_e$target = e.target) == null ? void 0 : _e$target.tagName) !== 'INPUT' && ((_e$target2 = e.target) == null ? void 0 : _e$target2.tagName) !== 'TEXTAREA' && ((_e$target3 = e.target) == null ? void 0 : _e$target3.isContentEditable) !== true;\n\n if (shouldHandleEvent) {\n if (shouldPreventDefault) {\n e.preventDefault();\n }\n\n _this.open(e);\n }\n };\n\n _this.openOnArrow = function (e) {\n var _this$state = _this.state,\n focus = _this$state.focus,\n open = _this$state.open;\n\n if (focus && !open) {\n var code = keyboardKey.getCode(e);\n\n if (code === keyboardKey.ArrowDown || code === keyboardKey.ArrowUp) {\n e.preventDefault();\n\n _this.open(e);\n }\n }\n };\n\n _this.makeSelectedItemActive = function (e, selectedIndex) {\n var _this$state2 = _this.state,\n open = _this$state2.open,\n value = _this$state2.value;\n var multiple = _this.props.multiple;\n\n var item = _this.getSelectedItem(selectedIndex);\n\n var selectedValue = _get(item, 'value');\n\n var disabled = _get(item, 'disabled'); // prevent selecting null if there was no selected item value\n // prevent selecting duplicate items when the dropdown is closed\n // prevent selecting disabled items\n\n\n if (_isNil(selectedValue) || !open || disabled) {\n return value;\n } // state value may be undefined\n\n\n var newValue = multiple ? _union(value, [selectedValue]) : selectedValue;\n var valueHasChanged = multiple ? !!_difference(newValue, value).length : newValue !== value;\n\n if (valueHasChanged) {\n // notify the onChange prop that the user is trying to change value\n _this.setState({\n value: newValue\n });\n\n _this.handleChange(e, newValue); // Heads up! This event handler should be called after `onChange`\n // Notify the onAddItem prop if this is a new value\n\n\n if (item['data-additional']) {\n _invoke(_this.props, 'onAddItem', e, _extends({}, _this.props, {\n value: selectedValue\n }));\n }\n }\n\n return value;\n };\n\n _this.selectItemOnEnter = function (e) {\n var search = _this.props.search;\n var _this$state3 = _this.state,\n open = _this$state3.open,\n selectedIndex = _this$state3.selectedIndex;\n\n if (!open) {\n return;\n }\n\n var shouldSelect = keyboardKey.getCode(e) === keyboardKey.Enter || // https://github.com/Semantic-Org/Semantic-UI-React/pull/3766\n !search && keyboardKey.getCode(e) === keyboardKey.Spacebar;\n\n if (!shouldSelect) {\n return;\n }\n\n e.preventDefault();\n\n var optionSize = _size(getMenuOptions({\n value: _this.state.value,\n options: _this.props.options,\n searchQuery: _this.state.searchQuery,\n additionLabel: _this.props.additionLabel,\n additionPosition: _this.props.additionPosition,\n allowAdditions: _this.props.allowAdditions,\n deburr: _this.props.deburr,\n multiple: _this.props.multiple,\n search: _this.props.search\n }));\n\n if (search && optionSize === 0) {\n return;\n }\n\n var nextValue = _this.makeSelectedItemActive(e, selectedIndex); // This is required as selected value may be the same\n\n\n _this.setState({\n selectedIndex: getSelectedIndex({\n additionLabel: _this.props.additionLabel,\n additionPosition: _this.props.additionPosition,\n allowAdditions: _this.props.allowAdditions,\n deburr: _this.props.deburr,\n multiple: _this.props.multiple,\n search: _this.props.search,\n selectedIndex: selectedIndex,\n value: nextValue,\n options: _this.props.options,\n searchQuery: ''\n })\n });\n\n _this.closeOnChange(e);\n\n _this.clearSearchQuery();\n\n if (search) {\n _invoke(_this.searchRef.current, 'focus');\n }\n };\n\n _this.removeItemOnBackspace = function (e) {\n var _this$props3 = _this.props,\n multiple = _this$props3.multiple,\n search = _this$props3.search;\n var _this$state4 = _this.state,\n searchQuery = _this$state4.searchQuery,\n value = _this$state4.value;\n if (keyboardKey.getCode(e) !== keyboardKey.Backspace) return;\n if (searchQuery || !search || !multiple || _isEmpty(value)) return;\n e.preventDefault(); // remove most recent value\n\n var newValue = _dropRight(value);\n\n _this.setState({\n value: newValue\n });\n\n _this.handleChange(e, newValue);\n };\n\n _this.closeOnDocumentClick = function (e) {\n if (!_this.props.closeOnBlur) return; // If event happened in the dropdown, ignore it\n\n if (_this.ref.current && doesNodeContainClick(_this.ref.current, e)) return;\n\n _this.close();\n };\n\n _this.handleMouseDown = function (e) {\n _this.isMouseDown = true;\n\n _invoke(_this.props, 'onMouseDown', e, _this.props);\n\n document.addEventListener('mouseup', _this.handleDocumentMouseUp);\n };\n\n _this.handleDocumentMouseUp = function () {\n _this.isMouseDown = false;\n document.removeEventListener('mouseup', _this.handleDocumentMouseUp);\n };\n\n _this.handleClick = function (e) {\n var _this$props4 = _this.props,\n minCharacters = _this$props4.minCharacters,\n search = _this$props4.search;\n var _this$state5 = _this.state,\n open = _this$state5.open,\n searchQuery = _this$state5.searchQuery;\n\n _invoke(_this.props, 'onClick', e, _this.props); // prevent closeOnDocumentClick()\n\n\n e.stopPropagation();\n if (!search) return _this.toggle(e);\n\n if (open) {\n _invoke(_this.searchRef.current, 'focus');\n\n return;\n }\n\n if (searchQuery.length >= minCharacters || minCharacters === 1) {\n _this.open(e);\n\n return;\n }\n\n _invoke(_this.searchRef.current, 'focus');\n };\n\n _this.handleIconClick = function (e) {\n var clearable = _this.props.clearable;\n\n var hasValue = _this.hasValue();\n\n _invoke(_this.props, 'onClick', e, _this.props); // prevent handleClick()\n\n\n e.stopPropagation();\n\n if (clearable && hasValue) {\n _this.clearValue(e);\n } else {\n _this.toggle(e);\n }\n };\n\n _this.handleItemClick = function (e, item) {\n var _this$props5 = _this.props,\n multiple = _this$props5.multiple,\n search = _this$props5.search;\n var currentValue = _this.state.value;\n var value = item.value; // prevent toggle() in handleClick()\n\n e.stopPropagation(); // prevent closeOnDocumentClick() if multiple or item is disabled\n\n if (multiple || item.disabled) {\n e.nativeEvent.stopImmediatePropagation();\n }\n\n if (item.disabled) {\n return;\n }\n\n var isAdditionItem = item['data-additional'];\n var newValue = multiple ? _union(_this.state.value, [value]) : value;\n var valueHasChanged = multiple ? !!_difference(newValue, currentValue).length : newValue !== currentValue; // notify the onChange prop that the user is trying to change value\n\n if (valueHasChanged) {\n _this.setState({\n value: newValue\n });\n\n _this.handleChange(e, newValue);\n }\n\n _this.clearSearchQuery();\n\n if (search) {\n _invoke(_this.searchRef.current, 'focus');\n } else {\n _invoke(_this.ref.current, 'focus');\n }\n\n _this.closeOnChange(e); // Heads up! This event handler should be called after `onChange`\n // Notify the onAddItem prop if this is a new value\n\n\n if (isAdditionItem) {\n _invoke(_this.props, 'onAddItem', e, _extends({}, _this.props, {\n value: value\n }));\n }\n };\n\n _this.handleFocus = function (e) {\n var focus = _this.state.focus;\n if (focus) return;\n\n _invoke(_this.props, 'onFocus', e, _this.props);\n\n _this.setState({\n focus: true\n });\n };\n\n _this.handleBlur = function (e) {\n // Heads up! Don't remove this.\n // https://github.com/Semantic-Org/Semantic-UI-React/issues/1315\n var currentTarget = _get(e, 'currentTarget');\n\n if (currentTarget && currentTarget.contains(document.activeElement)) return;\n var _this$props6 = _this.props,\n closeOnBlur = _this$props6.closeOnBlur,\n multiple = _this$props6.multiple,\n selectOnBlur = _this$props6.selectOnBlur; // do not \"blur\" when the mouse is down inside of the Dropdown\n\n if (_this.isMouseDown) return;\n\n _invoke(_this.props, 'onBlur', e, _this.props);\n\n if (selectOnBlur && !multiple) {\n _this.makeSelectedItemActive(e, _this.state.selectedIndex);\n\n if (closeOnBlur) _this.close();\n }\n\n _this.setState({\n focus: false\n });\n\n _this.clearSearchQuery();\n };\n\n _this.handleSearchChange = function (e, _ref) {\n var value = _ref.value;\n // prevent propagating to this.props.onChange()\n e.stopPropagation();\n var minCharacters = _this.props.minCharacters;\n var open = _this.state.open;\n var newQuery = value;\n\n _invoke(_this.props, 'onSearchChange', e, _extends({}, _this.props, {\n searchQuery: newQuery\n }));\n\n _this.setState({\n searchQuery: newQuery,\n selectedIndex: 0\n }); // open search dropdown on search query\n\n\n if (!open && newQuery.length >= minCharacters) {\n _this.open();\n\n return;\n } // close search dropdown if search query is too small\n\n\n if (open && minCharacters !== 1 && newQuery.length < minCharacters) _this.close();\n };\n\n _this.handleKeyDown = function (e) {\n _this.moveSelectionOnKeyDown(e);\n\n _this.openOnArrow(e);\n\n _this.openOnSpace(e);\n\n _this.selectItemOnEnter(e);\n\n _invoke(_this.props, 'onKeyDown', e);\n };\n\n _this.getSelectedItem = function (selectedIndex) {\n var options = getMenuOptions({\n value: _this.state.value,\n options: _this.props.options,\n searchQuery: _this.state.searchQuery,\n additionLabel: _this.props.additionLabel,\n additionPosition: _this.props.additionPosition,\n allowAdditions: _this.props.allowAdditions,\n deburr: _this.props.deburr,\n multiple: _this.props.multiple,\n search: _this.props.search\n });\n return _get(options, \"[\" + selectedIndex + \"]\");\n };\n\n _this.getItemByValue = function (value) {\n var options = _this.props.options;\n return _find(options, {\n value: value\n });\n };\n\n _this.getDropdownAriaOptions = function () {\n var _this$props7 = _this.props,\n loading = _this$props7.loading,\n disabled = _this$props7.disabled,\n search = _this$props7.search,\n multiple = _this$props7.multiple;\n var open = _this.state.open;\n var ariaOptions = {\n role: search ? 'combobox' : 'listbox',\n 'aria-busy': loading,\n 'aria-disabled': disabled,\n 'aria-expanded': !!open\n };\n\n if (ariaOptions.role === 'listbox') {\n ariaOptions['aria-multiselectable'] = multiple;\n }\n\n return ariaOptions;\n };\n\n _this.clearSearchQuery = function () {\n var searchQuery = _this.state.searchQuery;\n if (searchQuery === undefined || searchQuery === '') return;\n\n _this.setState({\n searchQuery: ''\n });\n };\n\n _this.handleLabelClick = function (e, labelProps) {\n // prevent focusing search input on click\n e.stopPropagation();\n\n _this.setState({\n selectedLabel: labelProps.value\n });\n\n _invoke(_this.props, 'onLabelClick', e, labelProps);\n };\n\n _this.handleLabelRemove = function (e, labelProps) {\n // prevent focusing search input on click\n e.stopPropagation();\n var value = _this.state.value;\n\n var newValue = _without(value, labelProps.value);\n\n _this.setState({\n value: newValue\n });\n\n _this.handleChange(e, newValue);\n };\n\n _this.getSelectedIndexAfterMove = function (offset, startIndex) {\n if (startIndex === void 0) {\n startIndex = _this.state.selectedIndex;\n }\n\n var options = getMenuOptions({\n value: _this.state.value,\n options: _this.props.options,\n searchQuery: _this.state.searchQuery,\n additionLabel: _this.props.additionLabel,\n additionPosition: _this.props.additionPosition,\n allowAdditions: _this.props.allowAdditions,\n deburr: _this.props.deburr,\n multiple: _this.props.multiple,\n search: _this.props.search\n }); // Prevent infinite loop\n // TODO: remove left part of condition after children API will be removed\n\n if (options === undefined || _every(options, 'disabled')) return;\n var lastIndex = options.length - 1;\n var wrapSelection = _this.props.wrapSelection; // next is after last, wrap to beginning\n // next is before first, wrap to end\n\n var nextIndex = startIndex + offset; // if 'wrapSelection' is set to false and selection is after last or before first, it just does not change\n\n if (!wrapSelection && (nextIndex > lastIndex || nextIndex < 0)) {\n nextIndex = startIndex;\n } else if (nextIndex > lastIndex) {\n nextIndex = 0;\n } else if (nextIndex < 0) {\n nextIndex = lastIndex;\n }\n\n if (options[nextIndex].disabled) {\n return _this.getSelectedIndexAfterMove(offset, nextIndex);\n }\n\n return nextIndex;\n };\n\n _this.handleIconOverrides = function (predefinedProps) {\n var clearable = _this.props.clearable;\n var classes = cx(clearable && _this.hasValue() && 'clear', predefinedProps.className);\n return {\n className: classes,\n onClick: function onClick(e) {\n _invoke(predefinedProps, 'onClick', e, predefinedProps);\n\n _this.handleIconClick(e);\n }\n };\n };\n\n _this.clearValue = function (e) {\n var multiple = _this.props.multiple;\n var newValue = multiple ? [] : '';\n\n _this.setState({\n value: newValue\n });\n\n _this.handleChange(e, newValue);\n };\n\n _this.computeSearchInputTabIndex = function () {\n var _this$props8 = _this.props,\n disabled = _this$props8.disabled,\n tabIndex = _this$props8.tabIndex;\n if (!_isNil(tabIndex)) return tabIndex;\n return disabled ? -1 : 0;\n };\n\n _this.computeSearchInputWidth = function () {\n var searchQuery = _this.state.searchQuery;\n\n if (_this.sizerRef.current && searchQuery) {\n // resize the search input, temporarily show the sizer so we can measure it\n _this.sizerRef.current.style.display = 'inline';\n _this.sizerRef.current.textContent = searchQuery;\n var searchWidth = Math.ceil(_this.sizerRef.current.getBoundingClientRect().width);\n\n _this.sizerRef.current.style.removeProperty('display');\n\n return searchWidth;\n }\n };\n\n _this.computeTabIndex = function () {\n var _this$props9 = _this.props,\n disabled = _this$props9.disabled,\n search = _this$props9.search,\n tabIndex = _this$props9.tabIndex; // don't set a root node tabIndex as the search input has its own tabIndex\n\n if (search) return undefined;\n if (disabled) return -1;\n return _isNil(tabIndex) ? 0 : tabIndex;\n };\n\n _this.handleSearchInputOverrides = function (predefinedProps) {\n return {\n onChange: function onChange(e, inputProps) {\n _invoke(predefinedProps, 'onChange', e, inputProps);\n\n _this.handleSearchChange(e, inputProps);\n }\n };\n };\n\n _this.hasValue = function () {\n var multiple = _this.props.multiple;\n var value = _this.state.value;\n return multiple ? !_isEmpty(value) : !_isNil(value) && value !== '';\n };\n\n _this.scrollSelectedItemIntoView = function () {\n if (!_this.ref.current) return;\n\n var menu = _this.ref.current.querySelector('.menu.visible');\n\n if (!menu) return;\n var item = menu.querySelector('.item.selected');\n if (!item) return;\n var isOutOfUpperView = item.offsetTop < menu.scrollTop;\n var isOutOfLowerView = item.offsetTop + item.clientHeight > menu.scrollTop + menu.clientHeight;\n\n if (isOutOfUpperView) {\n menu.scrollTop = item.offsetTop;\n } else if (isOutOfLowerView) {\n // eslint-disable-next-line no-mixed-operators\n menu.scrollTop = item.offsetTop + item.clientHeight - menu.clientHeight;\n }\n };\n\n _this.setOpenDirection = function () {\n if (!_this.ref.current) return;\n\n var menu = _this.ref.current.querySelector('.menu.visible');\n\n if (!menu) return;\n\n var dropdownRect = _this.ref.current.getBoundingClientRect();\n\n var menuHeight = menu.clientHeight;\n var spaceAtTheBottom = document.documentElement.clientHeight - dropdownRect.top - dropdownRect.height - menuHeight;\n var spaceAtTheTop = dropdownRect.top - menuHeight;\n var upward = spaceAtTheBottom < 0 && spaceAtTheTop > spaceAtTheBottom; // set state only if there's a relevant difference\n\n if (!upward !== !_this.state.upward) {\n _this.setState({\n upward: upward\n });\n }\n };\n\n _this.open = function (e, triggerSetState) {\n if (e === void 0) {\n e = null;\n }\n\n if (triggerSetState === void 0) {\n triggerSetState = true;\n }\n\n var _this$props10 = _this.props,\n disabled = _this$props10.disabled,\n search = _this$props10.search;\n if (disabled) return;\n if (search) _invoke(_this.searchRef.current, 'focus');\n\n _invoke(_this.props, 'onOpen', e, _this.props);\n\n if (triggerSetState) {\n _this.setState({\n open: true\n });\n }\n\n _this.scrollSelectedItemIntoView();\n };\n\n _this.close = function (e, callback) {\n if (callback === void 0) {\n callback = _this.handleClose;\n }\n\n if (_this.state.open) {\n _invoke(_this.props, 'onClose', e, _this.props);\n\n _this.setState({\n open: false\n }, callback);\n }\n };\n\n _this.handleClose = function () {\n var hasSearchFocus = document.activeElement === _this.searchRef.current; // https://github.com/Semantic-Org/Semantic-UI-React/issues/627\n // Blur the Dropdown on close so it is blurred after selecting an item.\n // This is to prevent it from re-opening when switching tabs after selecting an item.\n\n if (!hasSearchFocus && _this.ref.current) {\n _this.ref.current.blur();\n }\n\n var hasDropdownFocus = document.activeElement === _this.ref.current;\n var hasFocus = hasSearchFocus || hasDropdownFocus; // We need to keep the virtual model in sync with the browser focus change\n // https://github.com/Semantic-Org/Semantic-UI-React/issues/692\n\n _this.setState({\n focus: hasFocus\n });\n };\n\n _this.toggle = function (e) {\n return _this.state.open ? _this.close(e) : _this.open(e);\n };\n\n _this.renderText = function () {\n var _this$props11 = _this.props,\n multiple = _this$props11.multiple,\n placeholder = _this$props11.placeholder,\n search = _this$props11.search,\n text = _this$props11.text;\n var _this$state6 = _this.state,\n searchQuery = _this$state6.searchQuery,\n selectedIndex = _this$state6.selectedIndex,\n value = _this$state6.value,\n open = _this$state6.open;\n\n var hasValue = _this.hasValue();\n\n var classes = cx(placeholder && !hasValue && 'default', 'text', search && searchQuery && 'filtered');\n var _text = placeholder;\n var selectedItem;\n\n if (text) {\n _text = text;\n } else if (open && !multiple) {\n selectedItem = _this.getSelectedItem(selectedIndex);\n } else if (hasValue) {\n selectedItem = _this.getItemByValue(value);\n }\n\n return DropdownText.create(selectedItem ? renderItemContent(selectedItem) : _text, {\n defaultProps: {\n className: classes\n }\n });\n };\n\n _this.renderSearchInput = function () {\n var _this$props12 = _this.props,\n search = _this$props12.search,\n searchInput = _this$props12.searchInput;\n var searchQuery = _this.state.searchQuery;\n return search && /*#__PURE__*/React.createElement(Ref, {\n innerRef: _this.searchRef\n }, DropdownSearchInput.create(searchInput, {\n defaultProps: {\n style: {\n width: _this.computeSearchInputWidth()\n },\n tabIndex: _this.computeSearchInputTabIndex(),\n value: searchQuery\n },\n overrideProps: _this.handleSearchInputOverrides\n }));\n };\n\n _this.renderSearchSizer = function () {\n var _this$props13 = _this.props,\n search = _this$props13.search,\n multiple = _this$props13.multiple;\n return search && multiple && /*#__PURE__*/React.createElement(\"span\", {\n className: \"sizer\",\n ref: _this.sizerRef\n });\n };\n\n _this.renderLabels = function () {\n var _this$props14 = _this.props,\n multiple = _this$props14.multiple,\n renderLabel = _this$props14.renderLabel;\n var _this$state7 = _this.state,\n selectedLabel = _this$state7.selectedLabel,\n value = _this$state7.value;\n\n if (!multiple || _isEmpty(value)) {\n return;\n }\n\n var selectedItems = _map(value, _this.getItemByValue);\n\n // if no item could be found for a given state value the selected item will be undefined\n // compact the selectedItems so we only have actual objects left\n return _map(_compact(selectedItems), function (item, index) {\n var defaultProps = {\n active: item.value === selectedLabel,\n as: 'a',\n key: getKeyOrValue(item.key, item.value),\n onClick: _this.handleLabelClick,\n onRemove: _this.handleLabelRemove,\n value: item.value\n };\n return Label.create(renderLabel(item, index, defaultProps), {\n defaultProps: defaultProps\n });\n });\n };\n\n _this.renderOptions = function () {\n var _this$props15 = _this.props,\n lazyLoad = _this$props15.lazyLoad,\n multiple = _this$props15.multiple,\n search = _this$props15.search,\n noResultsMessage = _this$props15.noResultsMessage;\n var _this$state8 = _this.state,\n open = _this$state8.open,\n selectedIndex = _this$state8.selectedIndex,\n value = _this$state8.value; // lazy load, only render options when open\n\n if (lazyLoad && !open) return null;\n var options = getMenuOptions({\n value: _this.state.value,\n options: _this.props.options,\n searchQuery: _this.state.searchQuery,\n additionLabel: _this.props.additionLabel,\n additionPosition: _this.props.additionPosition,\n allowAdditions: _this.props.allowAdditions,\n deburr: _this.props.deburr,\n multiple: _this.props.multiple,\n search: _this.props.search\n });\n\n if (noResultsMessage !== null && search && _isEmpty(options)) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"message\"\n }, noResultsMessage);\n }\n\n var isActive = multiple ? function (optValue) {\n return _includes(value, optValue);\n } : function (optValue) {\n return optValue === value;\n };\n return _map(options, function (opt, i) {\n return DropdownItem.create(_extends({\n active: isActive(opt.value),\n selected: selectedIndex === i\n }, opt, {\n key: getKeyOrValue(opt.key, opt.value),\n // Needed for handling click events on disabled items\n style: _extends({}, opt.style, {\n pointerEvents: 'all'\n })\n }), {\n generateKey: false,\n overrideProps: function overrideProps(predefinedProps) {\n return {\n onClick: function onClick(e, item) {\n predefinedProps.onClick == null ? void 0 : predefinedProps.onClick(e, item);\n\n _this.handleItemClick(e, item);\n }\n };\n }\n });\n });\n };\n\n _this.renderMenu = function () {\n var _this$props16 = _this.props,\n children = _this$props16.children,\n direction = _this$props16.direction,\n header = _this$props16.header;\n var open = _this.state.open;\n\n var ariaOptions = _this.getDropdownMenuAriaOptions(); // single menu child\n\n\n if (!childrenUtils.isNil(children)) {\n var menuChild = Children.only(children);\n var className = cx(direction, useKeyOnly(open, 'visible'), menuChild.props.className);\n return /*#__PURE__*/cloneElement(menuChild, _extends({\n className: className\n }, ariaOptions));\n }\n\n return /*#__PURE__*/React.createElement(DropdownMenu, _extends({}, ariaOptions, {\n direction: direction,\n open: open\n }), DropdownHeader.create(header, {\n autoGenerateKey: false\n }), _this.renderOptions());\n };\n\n return _this;\n }\n\n var _proto = Dropdown.prototype;\n\n _proto.getInitialAutoControlledState = function getInitialAutoControlledState() {\n return {\n focus: false,\n searchQuery: ''\n };\n };\n\n Dropdown.getAutoControlledStateFromProps = function getAutoControlledStateFromProps(nextProps, computedState, prevState) {\n // These values are stored only for a comparison on next getAutoControlledStateFromProps()\n var derivedState = {\n __options: nextProps.options,\n __value: computedState.value\n }; // The selected index is only dependent:\n\n var shouldComputeSelectedIndex = // On value change\n !shallowEqual(prevState.__value, computedState.value) || // On option keys/values, we only check those properties to avoid recursive performance impacts.\n // https://github.com/Semantic-Org/Semantic-UI-React/issues/3000\n !_isEqual(getKeyAndValues(nextProps.options), getKeyAndValues(prevState.__options));\n\n if (shouldComputeSelectedIndex) {\n derivedState.selectedIndex = getSelectedIndex({\n additionLabel: nextProps.additionLabel,\n additionPosition: nextProps.additionPosition,\n allowAdditions: nextProps.allowAdditions,\n deburr: nextProps.deburr,\n multiple: nextProps.multiple,\n search: nextProps.search,\n selectedIndex: computedState.selectedIndex,\n value: computedState.value,\n options: nextProps.options,\n searchQuery: computedState.searchQuery\n });\n }\n\n return derivedState;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var open = this.state.open;\n\n if (open) {\n this.open(null, false);\n }\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n return !shallowEqual(nextProps, this.props) || !shallowEqual(nextState, this.state);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // eslint-disable-line complexity\n var _this$props17 = this.props,\n closeOnBlur = _this$props17.closeOnBlur,\n minCharacters = _this$props17.minCharacters,\n openOnFocus = _this$props17.openOnFocus,\n search = _this$props17.search;\n /* eslint-disable no-console */\n\n if (process.env.NODE_ENV !== 'production') {\n // in development, validate value type matches dropdown type\n var isNextValueArray = Array.isArray(this.props.value);\n\n var hasValue = _has(this.props, 'value');\n\n if (hasValue && this.props.multiple && !isNextValueArray) {\n console.error('Dropdown `value` must be an array when `multiple` is set.' + (\" Received type: `\" + Object.prototype.toString.call(this.props.value) + \"`.\"));\n } else if (hasValue && !this.props.multiple && isNextValueArray) {\n console.error('Dropdown `value` must not be an array when `multiple` is not set.' + ' Either set `multiple={true}` or use a string or number value.');\n }\n }\n /* eslint-enable no-console */\n // focused / blurred\n\n\n if (!prevState.focus && this.state.focus) {\n if (!this.isMouseDown) {\n var openable = !search || search && minCharacters === 1 && !this.state.open;\n if (openOnFocus && openable) this.open();\n }\n } else if (prevState.focus && !this.state.focus) {\n if (!this.isMouseDown && closeOnBlur) {\n this.close();\n }\n } // opened / closed\n\n\n if (!prevState.open && this.state.open) {\n this.setOpenDirection();\n this.scrollSelectedItemIntoView();\n } else if (prevState.open && !this.state.open) {}\n\n if (prevState.selectedIndex !== this.state.selectedIndex) {\n this.scrollSelectedItemIntoView();\n }\n } // ----------------------------------------\n // Document Event Handlers\n // ----------------------------------------\n // onChange needs to receive a value\n // can't rely on props.value if we are controlled\n ;\n\n _proto.getDropdownMenuAriaOptions = function getDropdownMenuAriaOptions() {\n var _this$props18 = this.props,\n search = _this$props18.search,\n multiple = _this$props18.multiple;\n var ariaOptions = {};\n\n if (search) {\n ariaOptions['aria-multiselectable'] = multiple;\n ariaOptions.role = 'listbox';\n }\n\n return ariaOptions;\n } // ----------------------------------------\n // Setters\n // ----------------------------------------\n ;\n\n _proto.render = function render() {\n var _this$props19 = this.props,\n basic = _this$props19.basic,\n button = _this$props19.button,\n className = _this$props19.className,\n compact = _this$props19.compact,\n disabled = _this$props19.disabled,\n error = _this$props19.error,\n fluid = _this$props19.fluid,\n floating = _this$props19.floating,\n icon = _this$props19.icon,\n inline = _this$props19.inline,\n item = _this$props19.item,\n labeled = _this$props19.labeled,\n loading = _this$props19.loading,\n multiple = _this$props19.multiple,\n pointing = _this$props19.pointing,\n search = _this$props19.search,\n selection = _this$props19.selection,\n scrolling = _this$props19.scrolling,\n simple = _this$props19.simple,\n trigger = _this$props19.trigger;\n var _this$state9 = this.state,\n focus = _this$state9.focus,\n open = _this$state9.open,\n upward = _this$state9.upward; // Classes\n\n var classes = cx('ui', useKeyOnly(open, 'active visible'), useKeyOnly(disabled, 'disabled'), useKeyOnly(error, 'error'), useKeyOnly(loading, 'loading'), useKeyOnly(basic, 'basic'), useKeyOnly(button, 'button'), useKeyOnly(compact, 'compact'), useKeyOnly(fluid, 'fluid'), useKeyOnly(floating, 'floating'), useKeyOnly(inline, 'inline'), // TODO: consider augmentation to render Dropdowns as Button/Menu, solves icon/link item issues\n // https://github.com/Semantic-Org/Semantic-UI-React/issues/401#issuecomment-240487229\n // TODO: the icon class is only required when a dropdown is a button\n // useKeyOnly(icon, 'icon'),\n useKeyOnly(labeled, 'labeled'), useKeyOnly(item, 'item'), useKeyOnly(multiple, 'multiple'), useKeyOnly(search, 'search'), useKeyOnly(selection, 'selection'), useKeyOnly(simple, 'simple'), useKeyOnly(scrolling, 'scrolling'), useKeyOnly(upward, 'upward'), useKeyOrValueAndKey(pointing, 'pointing'), 'dropdown', className);\n var rest = getUnhandledProps(Dropdown, this.props);\n var ElementType = getElementType(Dropdown, this.props);\n var ariaOptions = this.getDropdownAriaOptions(ElementType, this.props);\n return /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.ref\n }, /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, ariaOptions, {\n className: classes,\n onBlur: this.handleBlur,\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleMouseDown,\n onFocus: this.handleFocus,\n onChange: this.handleChange,\n tabIndex: this.computeTabIndex()\n }), this.renderLabels(), this.renderSearchInput(), this.renderSearchSizer(), trigger || this.renderText(), Icon.create(icon, {\n overrideProps: this.handleIconOverrides,\n autoGenerateKey: false\n }), this.renderMenu(), open && /*#__PURE__*/React.createElement(EventStack, {\n name: \"keydown\",\n on: this.closeOnEscape\n }), open && /*#__PURE__*/React.createElement(EventStack, {\n name: \"click\",\n on: this.closeOnDocumentClick\n }), focus && /*#__PURE__*/React.createElement(EventStack, {\n name: \"keydown\",\n on: this.removeItemOnBackspace\n })));\n };\n\n return Dropdown;\n}(Component);\n\nDropdown.handledProps = [\"additionLabel\", \"additionPosition\", \"allowAdditions\", \"as\", \"basic\", \"button\", \"children\", \"className\", \"clearable\", \"closeOnBlur\", \"closeOnChange\", \"closeOnEscape\", \"compact\", \"deburr\", \"defaultOpen\", \"defaultSearchQuery\", \"defaultSelectedLabel\", \"defaultUpward\", \"defaultValue\", \"direction\", \"disabled\", \"error\", \"floating\", \"fluid\", \"header\", \"icon\", \"inline\", \"item\", \"labeled\", \"lazyLoad\", \"loading\", \"minCharacters\", \"multiple\", \"noResultsMessage\", \"onAddItem\", \"onBlur\", \"onChange\", \"onClick\", \"onClose\", \"onFocus\", \"onLabelClick\", \"onMouseDown\", \"onOpen\", \"onSearchChange\", \"open\", \"openOnFocus\", \"options\", \"placeholder\", \"pointing\", \"renderLabel\", \"scrolling\", \"search\", \"searchInput\", \"searchQuery\", \"selectOnBlur\", \"selectOnNavigation\", \"selectedLabel\", \"selection\", \"simple\", \"tabIndex\", \"text\", \"trigger\", \"upward\", \"value\", \"wrapSelection\"];\nexport { Dropdown as default };\nDropdown.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Label prefixed to an option added by a user. */\n additionLabel: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\n\n /** Position of the `Add: ...` option in the dropdown list ('top' or 'bottom'). */\n additionPosition: PropTypes.oneOf(['top', 'bottom']),\n\n /**\n * Allow user additions to the list of options (boolean).\n * Requires the use of `selection`, `options` and `search`.\n */\n allowAdditions: customPropTypes.every([customPropTypes.demand(['options', 'selection', 'search']), PropTypes.bool]),\n\n /** A Dropdown can reduce its complexity. */\n basic: PropTypes.bool,\n\n /** Format the Dropdown to appear as a button. */\n button: PropTypes.bool,\n\n /** Primary content. */\n children: customPropTypes.every([customPropTypes.disallow(['options', 'selection']), customPropTypes.givenProps({\n children: PropTypes.any.isRequired\n }, PropTypes.element.isRequired)]),\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Using the clearable setting will let users remove their selection from a dropdown. */\n clearable: PropTypes.bool,\n\n /** Whether or not the menu should close when the dropdown is blurred. */\n closeOnBlur: PropTypes.bool,\n\n /** Whether or not the dropdown should close when the escape key is pressed. */\n closeOnEscape: PropTypes.bool,\n\n /**\n * Whether or not the menu should close when a value is selected from the dropdown.\n * By default, multiple selection dropdowns will remain open on change, while single\n * selection dropdowns will close on change.\n */\n closeOnChange: PropTypes.bool,\n\n /** A compact dropdown has no minimum width. */\n compact: PropTypes.bool,\n\n /** Whether or not the dropdown should strip diacritics in options and input search */\n deburr: PropTypes.bool,\n\n /** Initial value of open. */\n defaultOpen: PropTypes.bool,\n\n /** Initial value of searchQuery. */\n defaultSearchQuery: PropTypes.string,\n\n /** Currently selected label in multi-select. */\n defaultSelectedLabel: customPropTypes.every([customPropTypes.demand(['multiple']), PropTypes.oneOfType([PropTypes.number, PropTypes.string])]),\n\n /** Initial value of upward. */\n defaultUpward: PropTypes.bool,\n\n /** Initial value or value array if multiple. */\n defaultValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.bool, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]))]),\n\n /** A dropdown menu can open to the left or to the right. */\n direction: PropTypes.oneOf(['left', 'right']),\n\n /** A disabled dropdown menu or item does not allow user interaction. */\n disabled: PropTypes.bool,\n\n /** An errored dropdown can alert a user to a problem. */\n error: PropTypes.bool,\n\n /** A dropdown menu can contain floated content. */\n floating: PropTypes.bool,\n\n /** A dropdown can take the full width of its parent */\n fluid: PropTypes.bool,\n\n /** A dropdown menu can contain a header. */\n header: PropTypes.node,\n\n /** Shorthand for Icon. */\n icon: PropTypes.oneOfType([PropTypes.node, PropTypes.object]),\n\n /** A dropdown can be formatted to appear inline in other content. */\n inline: PropTypes.bool,\n\n /** A dropdown can be formatted as a Menu item. */\n item: PropTypes.bool,\n\n /** A dropdown can be labeled. */\n labeled: PropTypes.bool,\n\n /** A dropdown can defer rendering its options until it is open. */\n lazyLoad: PropTypes.bool,\n\n /** A dropdown can show that it is currently loading data. */\n loading: PropTypes.bool,\n\n /** The minimum characters for a search to begin showing results. */\n minCharacters: PropTypes.number,\n\n /** A selection dropdown can allow multiple selections. */\n multiple: PropTypes.bool,\n\n /** Message to display when there are no results. */\n noResultsMessage: PropTypes.node,\n\n /**\n * Called when a user adds a new item. Use this to update the options list.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props and the new item's value.\n */\n onAddItem: PropTypes.func,\n\n /**\n * Called on blur.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onBlur: PropTypes.func,\n\n /**\n * Called when the user attempts to change the value.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props and proposed value.\n */\n onChange: PropTypes.func,\n\n /**\n * Called on click.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClick: PropTypes.func,\n\n /**\n * Called when a close event happens.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClose: PropTypes.func,\n\n /**\n * Called on focus.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onFocus: PropTypes.func,\n\n /**\n * Called when a multi-select label is clicked.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All label props.\n */\n onLabelClick: PropTypes.func,\n\n /**\n * Called on mousedown.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onMouseDown: PropTypes.func,\n\n /**\n * Called when an open event happens.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onOpen: PropTypes.func,\n\n /**\n * Called on search input change.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props, includes current value of searchQuery.\n */\n onSearchChange: PropTypes.func,\n\n /** Controls whether or not the dropdown menu is displayed. */\n open: PropTypes.bool,\n\n /** Whether or not the menu should open when the dropdown is focused. */\n openOnFocus: PropTypes.bool,\n\n /** Array of Dropdown.Item props e.g. `{ text: '', value: '' }` */\n options: customPropTypes.every([customPropTypes.disallow(['children']), PropTypes.arrayOf(PropTypes.shape(DropdownItem.propTypes))]),\n\n /** Placeholder text. */\n placeholder: PropTypes.string,\n\n /** A dropdown can be formatted so that its menu is pointing. */\n pointing: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['left', 'right', 'top', 'top left', 'top right', 'bottom', 'bottom left', 'bottom right'])]),\n\n /**\n * Mapped over the active items and returns shorthand for the active item Labels.\n * Only applies to `multiple` Dropdowns.\n *\n * @param {object} item - A currently active dropdown item.\n * @param {number} index - The current index.\n * @param {object} defaultLabelProps - The default props for an active item Label.\n * @returns {*} Shorthand for a Label.\n */\n renderLabel: PropTypes.func,\n\n /** A dropdown can have its menu scroll. */\n scrolling: PropTypes.bool,\n\n /**\n * A selection dropdown can allow a user to search through a large list of choices.\n * Pass a function here to replace the default search.\n */\n search: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n\n /** A shorthand for a search input. */\n searchInput: PropTypes.oneOfType([PropTypes.array, PropTypes.node, PropTypes.object]),\n\n /** Current value of searchQuery. Creates a controlled component. */\n searchQuery: PropTypes.string,\n // TODO 'searchInMenu' or 'search='in menu' or ??? How to handle this markup and functionality?\n\n /** Define whether the highlighted item should be selected on blur. */\n selectOnBlur: PropTypes.bool,\n\n /**\n * Whether or not to change the value when navigating the menu using arrow keys.\n * Setting to false will require enter or left click to confirm a choice.\n */\n selectOnNavigation: PropTypes.bool,\n\n /** Currently selected label in multi-select. */\n selectedLabel: customPropTypes.every([customPropTypes.demand(['multiple']), PropTypes.oneOfType([PropTypes.string, PropTypes.number])]),\n\n /** A dropdown can be used to select between choices in a form. */\n selection: customPropTypes.every([customPropTypes.disallow(['children']), customPropTypes.demand(['options']), PropTypes.bool]),\n\n /** A simple dropdown can open without Javascript. */\n simple: PropTypes.bool,\n\n /** A dropdown can receive focus. */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** The text displayed in the dropdown, usually for the active item. */\n text: PropTypes.string,\n\n /** Custom element to trigger the menu to become visible. Takes place of 'text'. */\n trigger: customPropTypes.every([customPropTypes.disallow(['selection', 'text']), PropTypes.node]),\n\n /** Current value or value array if multiple. Creates a controlled component. */\n value: PropTypes.oneOfType([PropTypes.bool, PropTypes.string, PropTypes.number, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.bool, PropTypes.string, PropTypes.number]))]),\n\n /** Controls whether the dropdown will open upward. */\n upward: PropTypes.bool,\n\n /**\n * A dropdown will go to the last element when ArrowUp is pressed on the first,\n * or go to the first when ArrowDown is pressed on the last( aka infinite selection )\n */\n wrapSelection: PropTypes.bool\n} : {};\nDropdown.defaultProps = {\n additionLabel: 'Add ',\n additionPosition: 'top',\n closeOnBlur: true,\n closeOnEscape: true,\n deburr: false,\n icon: 'dropdown',\n minCharacters: 1,\n noResultsMessage: 'No results found.',\n openOnFocus: true,\n renderLabel: renderItemContent,\n searchInput: 'text',\n selectOnBlur: true,\n selectOnNavigation: true,\n wrapSelection: true\n};\nDropdown.autoControlledProps = ['open', 'searchQuery', 'selectedLabel', 'value', 'upward'];\nDropdown.Divider = DropdownDivider;\nDropdown.Header = DropdownHeader;\nDropdown.Item = DropdownItem;\nDropdown.Menu = DropdownMenu;\nDropdown.SearchInput = DropdownSearchInput;\nDropdown.Text = DropdownText;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _map from \"lodash-es/map\";\nimport _invoke from \"lodash-es/invoke\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\nimport Button from '../../elements/Button';\n/**\n * A modal can contain a row of actions.\n */\n\nvar ModalActions = /*#__PURE__*/function (_Component) {\n _inheritsLoose(ModalActions, _Component);\n\n function ModalActions() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.handleButtonOverrides = function (predefinedProps) {\n return {\n onClick: function onClick(e, buttonProps) {\n _invoke(predefinedProps, 'onClick', e, buttonProps);\n\n _invoke(_this.props, 'onActionClick', e, buttonProps);\n }\n };\n };\n\n return _this;\n }\n\n var _proto = ModalActions.prototype;\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n actions = _this$props.actions,\n children = _this$props.children,\n className = _this$props.className,\n content = _this$props.content;\n var classes = cx('actions', className);\n var rest = getUnhandledProps(ModalActions, this.props);\n var ElementType = getElementType(ModalActions, this.props);\n\n if (!childrenUtils.isNil(children)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), children);\n }\n\n if (!childrenUtils.isNil(content)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), content);\n }\n\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), _map(actions, function (action) {\n return Button.create(action, {\n overrideProps: _this2.handleButtonOverrides\n });\n }));\n };\n\n return ModalActions;\n}(Component);\n\nModalActions.handledProps = [\"actions\", \"as\", \"children\", \"className\", \"content\", \"onActionClick\"];\nexport { ModalActions as default };\nModalActions.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Array of shorthand buttons. */\n actions: customPropTypes.collectionShorthand,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /**\n * Action onClick handler when using shorthand `actions`.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props from the clicked action.\n */\n onActionClick: customPropTypes.every([customPropTypes.disallow(['children']), PropTypes.func])\n} : {};\nModalActions.create = createShorthandFactory(ModalActions, function (actions) {\n return {\n actions: actions\n };\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps, useKeyOnly } from '../../lib';\n/**\n * A modal can contain content.\n */\n\nfunction ModalContent(props) {\n var children = props.children,\n className = props.className,\n content = props.content,\n image = props.image,\n scrolling = props.scrolling;\n var classes = cx(className, useKeyOnly(image, 'image'), useKeyOnly(scrolling, 'scrolling'), 'content');\n var rest = getUnhandledProps(ModalContent, props);\n var ElementType = getElementType(ModalContent, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nModalContent.handledProps = [\"as\", \"children\", \"className\", \"content\", \"image\", \"scrolling\"];\nModalContent.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A modal can contain image content. */\n image: PropTypes.bool,\n\n /** A modal can use the entire size of the screen. */\n scrolling: PropTypes.bool\n} : {};\nModalContent.create = createShorthandFactory(ModalContent, function (content) {\n return {\n content: content\n };\n});\nexport default ModalContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\n/**\n * A modal can contain a description with one or more paragraphs.\n */\n\nfunction ModalDescription(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var classes = cx('description', className);\n var rest = getUnhandledProps(ModalDescription, props);\n var ElementType = getElementType(ModalDescription, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nModalDescription.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nModalDescription.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nexport default ModalDescription;","import React from 'react';\nimport isBrowser from '../isBrowser'; // useLayoutEffect() produces a warning with SSR rendering\n// https://medium.com/@alexandereardon/uselayouteffect-and-ssr-192986cdcf7a\n\nvar useIsomorphicLayoutEffect = isBrowser() && process.env.NODE_ENV !== 'test' ? React.useLayoutEffect : React.useEffect;\nexport default useIsomorphicLayoutEffect;","import { isRefObject } from '@fluentui/react-component-ref';\nimport React from 'react';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nvar CLASS_NAME_DELITIMITER = /\\s+/;\n/**\n * Accepts a set of ref objects that contain classnames as a string and returns an array of unique\n * classNames.\n *\n * @param {Set<React.RefObject>|undefined} classNameRefs\n * @returns String[]\n */\n\nexport function computeClassNames(classNameRefs) {\n var classNames = [];\n\n if (classNameRefs) {\n classNameRefs.forEach(function (classNameRef) {\n if (typeof classNameRef.current === 'string') {\n var classNamesForRef = classNameRef.current.split(CLASS_NAME_DELITIMITER);\n classNamesForRef.forEach(function (className) {\n classNames.push(className);\n });\n }\n });\n return classNames.filter(function (className, i, array) {\n return className.length > 0 && array.indexOf(className) === i;\n });\n }\n\n return [];\n}\n/**\n * Computes classnames that should be removed and added to a node based on input differences.\n *\n * @param {String[]} prevClassNames\n * @param {String[]} currentClassNames\n */\n\nexport function computeClassNamesDifference(prevClassNames, currentClassNames) {\n return [currentClassNames.filter(function (className) {\n return prevClassNames.indexOf(className) === -1;\n }), prevClassNames.filter(function (className) {\n return currentClassNames.indexOf(className) === -1;\n })];\n}\nvar prevClassNames = new Map();\n/**\n * @param {HTMLElement} node\n * @param {Set<React.RefObject>|undefined} classNameRefs\n */\n\nexport var handleClassNamesChange = function handleClassNamesChange(node, classNameRefs) {\n var currentClassNames = computeClassNames(classNameRefs);\n\n var _computeClassNamesDif = computeClassNamesDifference(prevClassNames.get(node) || [], currentClassNames),\n forAdd = _computeClassNamesDif[0],\n forRemoval = _computeClassNamesDif[1];\n\n if (node) {\n forAdd.forEach(function (className) {\n return node.classList.add(className);\n });\n forRemoval.forEach(function (className) {\n return node.classList.remove(className);\n });\n }\n\n prevClassNames.set(node, currentClassNames);\n};\nexport var NodeRegistry = function NodeRegistry() {\n var _this = this;\n\n this.add = function (node, classNameRef) {\n if (_this.nodes.has(node)) {\n var _set = _this.nodes.get(node);\n\n _set.add(classNameRef);\n\n return;\n } // IE11 does not support constructor params\n\n\n var set = new Set();\n set.add(classNameRef);\n\n _this.nodes.set(node, set);\n };\n\n this.del = function (node, classNameRef) {\n if (!_this.nodes.has(node)) {\n return;\n }\n\n var set = _this.nodes.get(node);\n\n if (set.size === 1) {\n _this.nodes.delete(node);\n\n return;\n }\n\n set.delete(classNameRef);\n };\n\n this.emit = function (node, callback) {\n callback(node, _this.nodes.get(node));\n };\n\n this.nodes = new Map();\n};\nvar nodeRegistry = new NodeRegistry();\n/**\n * A React hooks that allows to manage classNames on a DOM node in declarative manner. Accepts\n * a HTML element or React ref objects with it.\n *\n * @param {HTMLElement|React.RefObject} node\n * @param {String} className\n */\n\nexport default function useClassNamesOnNode(node, className) {\n var classNameRef = React.useRef();\n var isMounted = React.useRef(false);\n useIsomorphicLayoutEffect(function () {\n classNameRef.current = className;\n\n if (isMounted.current) {\n var element = isRefObject(node) ? node.current : node;\n nodeRegistry.emit(element, handleClassNamesChange);\n }\n\n isMounted.current = true;\n }, [className]);\n useIsomorphicLayoutEffect(function () {\n var element = isRefObject(node) ? node.current : node;\n nodeRegistry.add(element, classNameRef);\n nodeRegistry.emit(element, handleClassNamesChange);\n return function () {\n nodeRegistry.del(element, classNameRef);\n nodeRegistry.emit(element, handleClassNamesChange);\n };\n }, [node]);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { Ref } from '@fluentui/react-component-ref';\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps, useClassNamesOnNode, useKeyOnly } from '../../lib';\n/**\n * A modal has a dimmer.\n */\n\nfunction ModalDimmer(props) {\n var blurring = props.blurring,\n children = props.children,\n className = props.className,\n centered = props.centered,\n content = props.content,\n inverted = props.inverted,\n mountNode = props.mountNode,\n scrolling = props.scrolling;\n var ref = React.useRef();\n var classes = cx('ui', useKeyOnly(inverted, 'inverted'), useKeyOnly(!centered, 'top aligned'), 'page modals dimmer transition visible active', className);\n var bodyClasses = cx('dimmable dimmed', useKeyOnly(blurring, 'blurring'), useKeyOnly(scrolling, 'scrolling'));\n var rest = getUnhandledProps(ModalDimmer, props);\n var ElementType = getElementType(ModalDimmer, props);\n useClassNamesOnNode(mountNode, bodyClasses);\n React.useEffect(function () {\n if (ref.current && ref.current.style) {\n ref.current.style.setProperty('display', 'flex', 'important');\n }\n }, []);\n return /*#__PURE__*/React.createElement(Ref, {\n innerRef: ref\n }, /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children));\n}\n\nModalDimmer.handledProps = [\"as\", \"blurring\", \"centered\", \"children\", \"className\", \"content\", \"inverted\", \"mountNode\", \"scrolling\"];\nModalDimmer.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A dimmer can be blurred. */\n blurring: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** A dimmer can center its contents in the viewport. */\n centered: PropTypes.bool,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A dimmer can be inverted. */\n inverted: PropTypes.bool,\n\n /** The node where the modal should mount. Defaults to document.body. */\n mountNode: PropTypes.any,\n\n /** A dimmer can make body scrollable. */\n scrolling: PropTypes.bool\n} : {};\nModalDimmer.create = createShorthandFactory(ModalDimmer, function (content) {\n return {\n content: content\n };\n});\nexport default ModalDimmer;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\n/**\n * A modal can have a header.\n */\n\nfunction ModalHeader(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var classes = cx('header', className);\n var rest = getUnhandledProps(ModalHeader, props);\n var ElementType = getElementType(ModalHeader, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nModalHeader.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nModalHeader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nModalHeader.create = createShorthandFactory(ModalHeader, function (content) {\n return {\n content: content\n };\n});\nexport default ModalHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _isPlainObject from \"lodash-es/isPlainObject\";\nimport _pick from \"lodash-es/pick\";\nimport _includes from \"lodash-es/includes\";\nimport _reduce from \"lodash-es/reduce\";\nimport _isEmpty from \"lodash-es/isEmpty\";\nimport _invoke from \"lodash-es/invoke\";\nimport { Ref } from '@fluentui/react-component-ref';\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { createRef, isValidElement } from 'react';\nimport shallowEqual from 'shallowequal';\nimport { ModernAutoControlledComponent as Component, childrenUtils, customPropTypes, doesNodeContainClick, eventStack, getElementType, getUnhandledProps, isBrowser, useKeyOnly } from '../../lib';\nimport Icon from '../../elements/Icon';\nimport Portal from '../../addons/Portal';\nimport ModalActions from './ModalActions';\nimport ModalContent from './ModalContent';\nimport ModalDescription from './ModalDescription';\nimport ModalDimmer from './ModalDimmer';\nimport ModalHeader from './ModalHeader';\nimport { canFit, getLegacyStyles, isLegacy } from './utils';\n\n/**\n * A modal displays content that temporarily blocks interactions with the main view of a site.\n * @see Confirm\n * @see Portal\n */\nvar Modal = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Modal, _Component);\n\n function Modal() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.legacy = isBrowser() && isLegacy();\n _this.ref = /*#__PURE__*/createRef();\n _this.dimmerRef = /*#__PURE__*/createRef();\n _this.latestDocumentMouseDownEvent = null;\n\n _this.getMountNode = function () {\n return isBrowser() ? _this.props.mountNode || document.body : null;\n };\n\n _this.handleActionsOverrides = function (predefinedProps) {\n return {\n onActionClick: function onActionClick(e, actionProps) {\n _invoke(predefinedProps, 'onActionClick', e, actionProps);\n\n _invoke(_this.props, 'onActionClick', e, _this.props);\n\n _this.handleClose(e);\n }\n };\n };\n\n _this.handleClose = function (e) {\n _this.setState({\n open: false\n });\n\n _invoke(_this.props, 'onClose', e, _extends({}, _this.props, {\n open: false\n }));\n };\n\n _this.handleDocumentMouseDown = function (e) {\n _this.latestDocumentMouseDownEvent = e;\n };\n\n _this.handleDocumentClick = function (e) {\n var closeOnDimmerClick = _this.props.closeOnDimmerClick;\n var currentDocumentMouseDownEvent = _this.latestDocumentMouseDownEvent;\n _this.latestDocumentMouseDownEvent = null;\n if (!closeOnDimmerClick || doesNodeContainClick(_this.ref.current, currentDocumentMouseDownEvent) || doesNodeContainClick(_this.ref.current, e)) return;\n\n _this.setState({\n open: false\n });\n\n _invoke(_this.props, 'onClose', e, _extends({}, _this.props, {\n open: false\n }));\n };\n\n _this.handleIconOverrides = function (predefinedProps) {\n return {\n onClick: function onClick(e) {\n _invoke(predefinedProps, 'onClick', e);\n\n _this.handleClose(e);\n }\n };\n };\n\n _this.handleOpen = function (e) {\n _invoke(_this.props, 'onOpen', e, _extends({}, _this.props, {\n open: true\n }));\n\n _this.setState({\n open: true\n });\n };\n\n _this.handlePortalMount = function (e) {\n var eventPool = _this.props.eventPool;\n\n _this.setState({\n scrolling: false\n });\n\n _this.setPositionAndClassNames();\n\n eventStack.sub('mousedown', _this.handleDocumentMouseDown, {\n pool: eventPool,\n target: _this.dimmerRef.current\n });\n eventStack.sub('click', _this.handleDocumentClick, {\n pool: eventPool,\n target: _this.dimmerRef.current\n });\n\n _invoke(_this.props, 'onMount', e, _this.props);\n };\n\n _this.handlePortalUnmount = function (e) {\n var eventPool = _this.props.eventPool;\n cancelAnimationFrame(_this.animationRequestId);\n eventStack.unsub('mousedown', _this.handleDocumentMouseDown, {\n pool: eventPool,\n target: _this.dimmerRef.current\n });\n eventStack.unsub('click', _this.handleDocumentClick, {\n pool: eventPool,\n target: _this.dimmerRef.current\n });\n\n _invoke(_this.props, 'onUnmount', e, _this.props);\n };\n\n _this.setPositionAndClassNames = function () {\n var centered = _this.props.centered;\n var scrolling;\n var newState = {};\n\n if (_this.ref.current) {\n var rect = _this.ref.current.getBoundingClientRect();\n\n var isFitted = canFit(rect);\n scrolling = !isFitted; // Styles should be computed for IE11\n\n var legacyStyles = _this.legacy ? getLegacyStyles(isFitted, centered, rect) : {};\n\n if (!shallowEqual(_this.state.legacyStyles, legacyStyles)) {\n newState.legacyStyles = legacyStyles;\n }\n\n if (_this.state.scrolling !== scrolling) {\n newState.scrolling = scrolling;\n }\n }\n\n if (!_isEmpty(newState)) _this.setState(newState);\n _this.animationRequestId = requestAnimationFrame(_this.setPositionAndClassNames);\n };\n\n _this.renderContent = function (rest) {\n var _this$props = _this.props,\n actions = _this$props.actions,\n basic = _this$props.basic,\n children = _this$props.children,\n className = _this$props.className,\n closeIcon = _this$props.closeIcon,\n content = _this$props.content,\n header = _this$props.header,\n size = _this$props.size,\n style = _this$props.style;\n var _this$state = _this.state,\n legacyStyles = _this$state.legacyStyles,\n scrolling = _this$state.scrolling;\n var classes = cx('ui', size, useKeyOnly(basic, 'basic'), useKeyOnly(_this.legacy, 'legacy'), useKeyOnly(scrolling, 'scrolling'), 'modal transition visible active', className);\n var ElementType = getElementType(Modal, _this.props);\n var closeIconName = closeIcon === true ? 'close' : closeIcon;\n var closeIconJSX = Icon.create(closeIconName, {\n overrideProps: _this.handleIconOverrides\n });\n return /*#__PURE__*/React.createElement(Ref, {\n innerRef: _this.ref\n }, /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes,\n style: _extends({}, legacyStyles, style)\n }), closeIconJSX, childrenUtils.isNil(children) ? /*#__PURE__*/React.createElement(React.Fragment, null, ModalHeader.create(header, {\n autoGenerateKey: false\n }), ModalContent.create(content, {\n autoGenerateKey: false\n }), ModalActions.create(actions, {\n overrideProps: _this.handleActionsOverrides\n })) : children));\n };\n\n return _this;\n }\n\n var _proto = Modal.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.handlePortalUnmount();\n } // Do not access document when server side rendering\n ;\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n centered = _this$props2.centered,\n closeOnDocumentClick = _this$props2.closeOnDocumentClick,\n dimmer = _this$props2.dimmer,\n eventPool = _this$props2.eventPool,\n trigger = _this$props2.trigger;\n var _this$state2 = this.state,\n open = _this$state2.open,\n scrolling = _this$state2.scrolling;\n var mountNode = this.getMountNode(); // Short circuit when server side rendering\n\n if (!isBrowser()) {\n return /*#__PURE__*/isValidElement(trigger) ? trigger : null;\n }\n\n var unhandled = getUnhandledProps(Modal, this.props);\n var portalPropNames = Portal.handledProps;\n\n var rest = _reduce(unhandled, function (acc, val, key) {\n if (!_includes(portalPropNames, key)) acc[key] = val;\n return acc;\n }, {});\n\n var portalProps = _pick(unhandled, portalPropNames); // Heads up!\n //\n // The SUI CSS selector to prevent the modal itself from blurring requires an immediate .dimmer child:\n // .blurring.dimmed.dimmable>:not(.dimmer) { ... }\n //\n // The .blurring.dimmed.dimmable is the body, so that all body content inside is blurred.\n // We need the immediate child to be the dimmer to :not() blur the modal itself!\n // Otherwise, the portal div is also blurred, blurring the modal.\n //\n // We cannot them wrap the modalJSX in an actual <Dimmer /> instead, we apply the dimmer classes to the <Portal />.\n\n\n return /*#__PURE__*/React.createElement(Portal, _extends({\n closeOnDocumentClick: closeOnDocumentClick\n }, portalProps, {\n trigger: trigger,\n eventPool: eventPool,\n mountNode: mountNode,\n open: open,\n onClose: this.handleClose,\n onMount: this.handlePortalMount,\n onOpen: this.handleOpen,\n onUnmount: this.handlePortalUnmount\n }), /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.dimmerRef\n }, ModalDimmer.create(_isPlainObject(dimmer) ? dimmer : {}, {\n autoGenerateKey: false,\n defaultProps: {\n blurring: dimmer === 'blurring',\n inverted: dimmer === 'inverted'\n },\n overrideProps: {\n children: this.renderContent(rest),\n centered: centered,\n mountNode: mountNode,\n scrolling: scrolling\n }\n })));\n };\n\n return Modal;\n}(Component);\n\nModal.handledProps = [\"actions\", \"as\", \"basic\", \"centered\", \"children\", \"className\", \"closeIcon\", \"closeOnDimmerClick\", \"closeOnDocumentClick\", \"content\", \"defaultOpen\", \"dimmer\", \"eventPool\", \"header\", \"mountNode\", \"onActionClick\", \"onClose\", \"onMount\", \"onOpen\", \"onUnmount\", \"open\", \"size\", \"style\", \"trigger\"];\nModal.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Shorthand for Modal.Actions. Typically an array of button shorthand. */\n actions: customPropTypes.itemShorthand,\n\n /** A modal can reduce its complexity */\n basic: PropTypes.bool,\n\n /** A modal can be vertically centered in the viewport */\n centered: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for the close icon. Closes the modal on click. */\n closeIcon: PropTypes.oneOfType([PropTypes.node, PropTypes.object, PropTypes.bool]),\n\n /** Whether or not the Modal should close when the dimmer is clicked. */\n closeOnDimmerClick: PropTypes.bool,\n\n /** Whether or not the Modal should close when the document is clicked. */\n closeOnDocumentClick: PropTypes.bool,\n\n /** Simple text content for the Modal. */\n content: customPropTypes.itemShorthand,\n\n /** Initial value of open. */\n defaultOpen: PropTypes.bool,\n\n /** A Modal can appear in a dimmer. */\n dimmer: PropTypes.oneOfType([PropTypes.bool, PropTypes.func, PropTypes.object, PropTypes.oneOf(['inverted', 'blurring'])]),\n\n /** Event pool namespace that is used to handle component events */\n eventPool: PropTypes.string,\n\n /** Modal displayed above the content in bold. */\n header: customPropTypes.itemShorthand,\n\n /** The node where the modal should mount. Defaults to document.body. */\n mountNode: PropTypes.any,\n\n /**\n * Action onClick handler when using shorthand `actions`.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onActionClick: PropTypes.func,\n\n /**\n * Called when a close event happens.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClose: PropTypes.func,\n\n /**\n * Called when the modal is mounted on the DOM.\n *\n * @param {null}\n * @param {object} data - All props.\n */\n onMount: PropTypes.func,\n\n /**\n * Called when an open event happens.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onOpen: PropTypes.func,\n\n /**\n * Called when the modal is unmounted from the DOM.\n *\n * @param {null}\n * @param {object} data - All props.\n */\n onUnmount: PropTypes.func,\n\n /** Controls whether or not the Modal is displayed. */\n open: PropTypes.bool,\n\n /** A modal can vary in size */\n size: PropTypes.oneOf(['mini', 'tiny', 'small', 'large', 'fullscreen']),\n\n /** Custom styles. */\n style: PropTypes.object,\n\n /** Element to be rendered in-place where the modal is defined. */\n trigger: PropTypes.node\n /**\n * NOTE: Any unhandled props that are defined in Modal are passed-through\n * to the inner Portal.\n */\n\n} : {};\nModal.defaultProps = {\n centered: true,\n dimmer: true,\n closeOnDimmerClick: true,\n closeOnDocumentClick: false,\n eventPool: 'Modal'\n};\nModal.autoControlledProps = ['open'];\nModal.Actions = ModalActions;\nModal.Content = ModalContent;\nModal.Description = ModalDescription;\nModal.Dimmer = ModalDimmer;\nModal.Header = ModalHeader;\nexport default Modal;","// https://github.com/Semantic-Org/Semantic-UI/blob/2.4.1/src/definitions/modules/modal.js#L956\nvar OFFSET = 0; // https://github.com/Semantic-Org/Semantic-UI/blob/2.4.1/src/definitions/modules/modal.js#L990\n\nvar PADDING = 50;\n/**\n * Ensures that modal can fit viewport without scroll.\n *\n * @param modalRect {DOMRect}\n *\n * @see https://github.com/Semantic-Org/Semantic-UI/blob/2.4.1/src/definitions/modules/modal.js#L608\n */\n\nexport var canFit = function canFit(modalRect) {\n // original: scrollHeight = $module.prop('scrollHeight'),\n // is replaced by .height because scrollHeight provides integer which produces glitches\n // https://github.com/Semantic-Org/Semantic-UI-React/issues/2221\n var scrollHeight = modalRect.height + OFFSET; // $module.outerHeight() + settings.offset\n\n var height = modalRect.height + OFFSET; // original: $(window).height()\n\n var contextHeight = window.innerHeight;\n var verticalCenter = contextHeight / 2;\n var topOffset = -(height / 2); // padding with edge of page\n\n var paddingHeight = PADDING;\n var startPosition = verticalCenter + topOffset; // 0\n // original: scrollHeight > height\n // ? startPosition + scrollHeight + paddingHeight < contextHeight\n // : height + paddingHeight * 2 < contextHeight\n\n return startPosition + scrollHeight + paddingHeight < contextHeight;\n};\n/**\n * Creates legacy styles for IE11.\n *\n * @param isFitted {Boolean}\n * @param centered {Boolean}\n * @param modalRect {DOMRect}\n *\n * @see https://github.com/Semantic-Org/Semantic-UI/blob/2.4.1/src/definitions/modules/modal.js#L718\n */\n\nexport var getLegacyStyles = function getLegacyStyles(isFitted, centered, modalRect) {\n var marginTop = centered && isFitted ? -(modalRect.height / 2) : 0;\n var marginLeft = -(modalRect.width / 2);\n return {\n marginLeft: marginLeft,\n marginTop: marginTop\n };\n}; // https://github.com/Semantic-Org/Semantic-UI/blob/2.4.1/src/definitions/modules/modal.js#L631\n\n/* istanbul ignore next */\n\nexport var isLegacy = function isLegacy() {\n return !window.ActiveXObject && 'ActiveXObject' in window;\n};","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { Subscribable } from './subscribable.mjs';\nimport { isServer } from './utils.mjs';\n\nclass FocusManager extends Subscribable {\n constructor() {\n super();\n\n this.setup = onFocus => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const listener = () => onFocus(); // Listen to visibillitychange and focus\n\n\n window.addEventListener('visibilitychange', listener, false);\n window.addEventListener('focus', listener, false);\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', listener);\n window.removeEventListener('focus', listener);\n };\n }\n\n return;\n };\n }\n\n onSubscribe() {\n if (!this.cleanup) {\n this.setEventListener(this.setup);\n }\n }\n\n onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$cleanup;\n\n (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n this.cleanup = undefined;\n }\n }\n\n setEventListener(setup) {\n var _this$cleanup2;\n\n this.setup = setup;\n (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n this.cleanup = setup(focused => {\n if (typeof focused === 'boolean') {\n this.setFocused(focused);\n } else {\n this.onFocus();\n }\n });\n }\n\n setFocused(focused) {\n const changed = this.focused !== focused;\n\n if (changed) {\n this.focused = focused;\n this.onFocus();\n }\n }\n\n onFocus() {\n this.listeners.forEach(({\n listener\n }) => {\n listener();\n });\n }\n\n isFocused() {\n if (typeof this.focused === 'boolean') {\n return this.focused;\n } // document global can be unavailable in react native\n\n\n if (typeof document === 'undefined') {\n return true;\n }\n\n return [undefined, 'visible', 'prerender'].includes(document.visibilityState);\n }\n\n}\nconst focusManager = new FocusManager();\n\nexport { FocusManager, focusManager };\n//# sourceMappingURL=focusManager.mjs.map\n","const defaultLogger = console;\n\nexport { defaultLogger };\n//# sourceMappingURL=logger.mjs.map\n","import { defaultLogger } from './logger.mjs';\nimport { notifyManager } from './notifyManager.mjs';\nimport { Removable } from './removable.mjs';\nimport { createRetryer, canFetch } from './retryer.mjs';\n\n// CLASS\nclass Mutation extends Removable {\n constructor(config) {\n super();\n this.defaultOptions = config.defaultOptions;\n this.mutationId = config.mutationId;\n this.mutationCache = config.mutationCache;\n this.logger = config.logger || defaultLogger;\n this.observers = [];\n this.state = config.state || getDefaultState();\n this.setOptions(config.options);\n this.scheduleGc();\n }\n\n setOptions(options) {\n this.options = { ...this.defaultOptions,\n ...options\n };\n this.updateCacheTime(this.options.cacheTime);\n }\n\n get meta() {\n return this.options.meta;\n }\n\n setState(state) {\n this.dispatch({\n type: 'setState',\n state\n });\n }\n\n addObserver(observer) {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer); // Stop the mutation from being garbage collected\n\n this.clearGcTimeout();\n this.mutationCache.notify({\n type: 'observerAdded',\n mutation: this,\n observer\n });\n }\n }\n\n removeObserver(observer) {\n this.observers = this.observers.filter(x => x !== observer);\n this.scheduleGc();\n this.mutationCache.notify({\n type: 'observerRemoved',\n mutation: this,\n observer\n });\n }\n\n optionalRemove() {\n if (!this.observers.length) {\n if (this.state.status === 'loading') {\n this.scheduleGc();\n } else {\n this.mutationCache.remove(this);\n }\n }\n }\n\n continue() {\n var _this$retryer$continu, _this$retryer;\n\n return (_this$retryer$continu = (_this$retryer = this.retryer) == null ? void 0 : _this$retryer.continue()) != null ? _this$retryer$continu : this.execute();\n }\n\n async execute() {\n const executeMutation = () => {\n var _this$options$retry;\n\n this.retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject('No mutationFn found');\n }\n\n return this.options.mutationFn(this.state.variables);\n },\n onFail: (failureCount, error) => {\n this.dispatch({\n type: 'failed',\n failureCount,\n error\n });\n },\n onPause: () => {\n this.dispatch({\n type: 'pause'\n });\n },\n onContinue: () => {\n this.dispatch({\n type: 'continue'\n });\n },\n retry: (_this$options$retry = this.options.retry) != null ? _this$options$retry : 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode\n });\n return this.retryer.promise;\n };\n\n const restored = this.state.status === 'loading';\n\n try {\n var _this$mutationCache$c3, _this$mutationCache$c4, _this$options$onSucce, _this$options2, _this$mutationCache$c5, _this$mutationCache$c6, _this$options$onSettl, _this$options3;\n\n if (!restored) {\n var _this$mutationCache$c, _this$mutationCache$c2, _this$options$onMutat, _this$options;\n\n this.dispatch({\n type: 'loading',\n variables: this.options.variables\n }); // Notify cache callback\n\n await ((_this$mutationCache$c = (_this$mutationCache$c2 = this.mutationCache.config).onMutate) == null ? void 0 : _this$mutationCache$c.call(_this$mutationCache$c2, this.state.variables, this));\n const context = await ((_this$options$onMutat = (_this$options = this.options).onMutate) == null ? void 0 : _this$options$onMutat.call(_this$options, this.state.variables));\n\n if (context !== this.state.context) {\n this.dispatch({\n type: 'loading',\n context,\n variables: this.state.variables\n });\n }\n }\n\n const data = await executeMutation(); // Notify cache callback\n\n await ((_this$mutationCache$c3 = (_this$mutationCache$c4 = this.mutationCache.config).onSuccess) == null ? void 0 : _this$mutationCache$c3.call(_this$mutationCache$c4, data, this.state.variables, this.state.context, this));\n await ((_this$options$onSucce = (_this$options2 = this.options).onSuccess) == null ? void 0 : _this$options$onSucce.call(_this$options2, data, this.state.variables, this.state.context)); // Notify cache callback\n\n await ((_this$mutationCache$c5 = (_this$mutationCache$c6 = this.mutationCache.config).onSettled) == null ? void 0 : _this$mutationCache$c5.call(_this$mutationCache$c6, data, null, this.state.variables, this.state.context, this));\n await ((_this$options$onSettl = (_this$options3 = this.options).onSettled) == null ? void 0 : _this$options$onSettl.call(_this$options3, data, null, this.state.variables, this.state.context));\n this.dispatch({\n type: 'success',\n data\n });\n return data;\n } catch (error) {\n try {\n var _this$mutationCache$c7, _this$mutationCache$c8, _this$options$onError, _this$options4, _this$mutationCache$c9, _this$mutationCache$c10, _this$options$onSettl2, _this$options5;\n\n // Notify cache callback\n await ((_this$mutationCache$c7 = (_this$mutationCache$c8 = this.mutationCache.config).onError) == null ? void 0 : _this$mutationCache$c7.call(_this$mutationCache$c8, error, this.state.variables, this.state.context, this));\n\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(error);\n }\n\n await ((_this$options$onError = (_this$options4 = this.options).onError) == null ? void 0 : _this$options$onError.call(_this$options4, error, this.state.variables, this.state.context)); // Notify cache callback\n\n await ((_this$mutationCache$c9 = (_this$mutationCache$c10 = this.mutationCache.config).onSettled) == null ? void 0 : _this$mutationCache$c9.call(_this$mutationCache$c10, undefined, error, this.state.variables, this.state.context, this));\n await ((_this$options$onSettl2 = (_this$options5 = this.options).onSettled) == null ? void 0 : _this$options$onSettl2.call(_this$options5, undefined, error, this.state.variables, this.state.context));\n throw error;\n } finally {\n this.dispatch({\n type: 'error',\n error: error\n });\n }\n }\n }\n\n dispatch(action) {\n const reducer = state => {\n switch (action.type) {\n case 'failed':\n return { ...state,\n failureCount: action.failureCount,\n failureReason: action.error\n };\n\n case 'pause':\n return { ...state,\n isPaused: true\n };\n\n case 'continue':\n return { ...state,\n isPaused: false\n };\n\n case 'loading':\n return { ...state,\n context: action.context,\n data: undefined,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: !canFetch(this.options.networkMode),\n status: 'loading',\n variables: action.variables\n };\n\n case 'success':\n return { ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: 'success',\n isPaused: false\n };\n\n case 'error':\n return { ...state,\n data: undefined,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: 'error'\n };\n\n case 'setState':\n return { ...state,\n ...action.state\n };\n }\n };\n\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.observers.forEach(observer => {\n observer.onMutationUpdate(action);\n });\n this.mutationCache.notify({\n mutation: this,\n type: 'updated',\n action\n });\n });\n }\n\n}\nfunction getDefaultState() {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: 'idle',\n variables: undefined\n };\n}\n\nexport { Mutation, getDefaultState };\n//# sourceMappingURL=mutation.mjs.map\n","import { notifyManager } from './notifyManager.mjs';\nimport { Mutation } from './mutation.mjs';\nimport { matchMutation, noop } from './utils.mjs';\nimport { Subscribable } from './subscribable.mjs';\n\n// CLASS\nclass MutationCache extends Subscribable {\n constructor(config) {\n super();\n this.config = config || {};\n this.mutations = [];\n this.mutationId = 0;\n }\n\n build(client, options, state) {\n const mutation = new Mutation({\n mutationCache: this,\n logger: client.getLogger(),\n mutationId: ++this.mutationId,\n options: client.defaultMutationOptions(options),\n state,\n defaultOptions: options.mutationKey ? client.getMutationDefaults(options.mutationKey) : undefined\n });\n this.add(mutation);\n return mutation;\n }\n\n add(mutation) {\n this.mutations.push(mutation);\n this.notify({\n type: 'added',\n mutation\n });\n }\n\n remove(mutation) {\n this.mutations = this.mutations.filter(x => x !== mutation);\n this.notify({\n type: 'removed',\n mutation\n });\n }\n\n clear() {\n notifyManager.batch(() => {\n this.mutations.forEach(mutation => {\n this.remove(mutation);\n });\n });\n }\n\n getAll() {\n return this.mutations;\n }\n\n find(filters) {\n if (typeof filters.exact === 'undefined') {\n filters.exact = true;\n }\n\n return this.mutations.find(mutation => matchMutation(filters, mutation));\n }\n\n findAll(filters) {\n return this.mutations.filter(mutation => matchMutation(filters, mutation));\n }\n\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach(({\n listener\n }) => {\n listener(event);\n });\n });\n }\n\n resumePausedMutations() {\n var _this$resuming;\n\n this.resuming = ((_this$resuming = this.resuming) != null ? _this$resuming : Promise.resolve()).then(() => {\n const pausedMutations = this.mutations.filter(x => x.state.isPaused);\n return notifyManager.batch(() => pausedMutations.reduce((promise, mutation) => promise.then(() => mutation.continue().catch(noop)), Promise.resolve()));\n }).then(() => {\n this.resuming = undefined;\n });\n return this.resuming;\n }\n\n}\n\nexport { MutationCache };\n//# sourceMappingURL=mutationCache.mjs.map\n","import { scheduleMicrotask } from './utils.mjs';\n\nfunction createNotifyManager() {\n let queue = [];\n let transactions = 0;\n\n let notifyFn = callback => {\n callback();\n };\n\n let batchNotifyFn = callback => {\n callback();\n };\n\n const batch = callback => {\n let result;\n transactions++;\n\n try {\n result = callback();\n } finally {\n transactions--;\n\n if (!transactions) {\n flush();\n }\n }\n\n return result;\n };\n\n const schedule = callback => {\n if (transactions) {\n queue.push(callback);\n } else {\n scheduleMicrotask(() => {\n notifyFn(callback);\n });\n }\n };\n /**\n * All calls to the wrapped function will be batched.\n */\n\n\n const batchCalls = callback => {\n return (...args) => {\n schedule(() => {\n callback(...args);\n });\n };\n };\n\n const flush = () => {\n const originalQueue = queue;\n queue = [];\n\n if (originalQueue.length) {\n scheduleMicrotask(() => {\n batchNotifyFn(() => {\n originalQueue.forEach(callback => {\n notifyFn(callback);\n });\n });\n });\n }\n };\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n\n\n const setNotifyFunction = fn => {\n notifyFn = fn;\n };\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n\n\n const setBatchNotifyFunction = fn => {\n batchNotifyFn = fn;\n };\n\n return {\n batch,\n batchCalls,\n schedule,\n setNotifyFunction,\n setBatchNotifyFunction\n };\n} // SINGLETON\n\nconst notifyManager = createNotifyManager();\n\nexport { createNotifyManager, notifyManager };\n//# sourceMappingURL=notifyManager.mjs.map\n","import { Subscribable } from './subscribable.mjs';\nimport { isServer } from './utils.mjs';\n\nconst onlineEvents = ['online', 'offline'];\nclass OnlineManager extends Subscribable {\n constructor() {\n super();\n\n this.setup = onOnline => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const listener = () => onOnline(); // Listen to online\n\n\n onlineEvents.forEach(event => {\n window.addEventListener(event, listener, false);\n });\n return () => {\n // Be sure to unsubscribe if a new handler is set\n onlineEvents.forEach(event => {\n window.removeEventListener(event, listener);\n });\n };\n }\n\n return;\n };\n }\n\n onSubscribe() {\n if (!this.cleanup) {\n this.setEventListener(this.setup);\n }\n }\n\n onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$cleanup;\n\n (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n this.cleanup = undefined;\n }\n }\n\n setEventListener(setup) {\n var _this$cleanup2;\n\n this.setup = setup;\n (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n this.cleanup = setup(online => {\n if (typeof online === 'boolean') {\n this.setOnline(online);\n } else {\n this.onOnline();\n }\n });\n }\n\n setOnline(online) {\n const changed = this.online !== online;\n\n if (changed) {\n this.online = online;\n this.onOnline();\n }\n }\n\n onOnline() {\n this.listeners.forEach(({\n listener\n }) => {\n listener();\n });\n }\n\n isOnline() {\n if (typeof this.online === 'boolean') {\n return this.online;\n }\n\n if (typeof navigator === 'undefined' || typeof navigator.onLine === 'undefined') {\n return true;\n }\n\n return navigator.onLine;\n }\n\n}\nconst onlineManager = new OnlineManager();\n\nexport { OnlineManager, onlineManager };\n//# sourceMappingURL=onlineManager.mjs.map\n","import { replaceData, noop, timeUntilStale, getAbortController } from './utils.mjs';\nimport { defaultLogger } from './logger.mjs';\nimport { notifyManager } from './notifyManager.mjs';\nimport { createRetryer, isCancelledError, canFetch } from './retryer.mjs';\nimport { Removable } from './removable.mjs';\n\n// CLASS\nclass Query extends Removable {\n constructor(config) {\n super();\n this.abortSignalConsumed = false;\n this.defaultOptions = config.defaultOptions;\n this.setOptions(config.options);\n this.observers = [];\n this.cache = config.cache;\n this.logger = config.logger || defaultLogger;\n this.queryKey = config.queryKey;\n this.queryHash = config.queryHash;\n this.initialState = config.state || getDefaultState(this.options);\n this.state = this.initialState;\n this.scheduleGc();\n }\n\n get meta() {\n return this.options.meta;\n }\n\n setOptions(options) {\n this.options = { ...this.defaultOptions,\n ...options\n };\n this.updateCacheTime(this.options.cacheTime);\n }\n\n optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === 'idle') {\n this.cache.remove(this);\n }\n }\n\n setData(newData, options) {\n const data = replaceData(this.state.data, newData, this.options); // Set data and mark it as cached\n\n this.dispatch({\n data,\n type: 'success',\n dataUpdatedAt: options == null ? void 0 : options.updatedAt,\n manual: options == null ? void 0 : options.manual\n });\n return data;\n }\n\n setState(state, setStateOptions) {\n this.dispatch({\n type: 'setState',\n state,\n setStateOptions\n });\n }\n\n cancel(options) {\n var _this$retryer;\n\n const promise = this.promise;\n (_this$retryer = this.retryer) == null ? void 0 : _this$retryer.cancel(options);\n return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n }\n\n destroy() {\n super.destroy();\n this.cancel({\n silent: true\n });\n }\n\n reset() {\n this.destroy();\n this.setState(this.initialState);\n }\n\n isActive() {\n return this.observers.some(observer => observer.options.enabled !== false);\n }\n\n isDisabled() {\n return this.getObserversCount() > 0 && !this.isActive();\n }\n\n isStale() {\n return this.state.isInvalidated || !this.state.dataUpdatedAt || this.observers.some(observer => observer.getCurrentResult().isStale);\n }\n\n isStaleByTime(staleTime = 0) {\n return this.state.isInvalidated || !this.state.dataUpdatedAt || !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n }\n\n onFocus() {\n var _this$retryer2;\n\n const observer = this.observers.find(x => x.shouldFetchOnWindowFocus());\n\n if (observer) {\n observer.refetch({\n cancelRefetch: false\n });\n } // Continue fetch if currently paused\n\n\n (_this$retryer2 = this.retryer) == null ? void 0 : _this$retryer2.continue();\n }\n\n onOnline() {\n var _this$retryer3;\n\n const observer = this.observers.find(x => x.shouldFetchOnReconnect());\n\n if (observer) {\n observer.refetch({\n cancelRefetch: false\n });\n } // Continue fetch if currently paused\n\n\n (_this$retryer3 = this.retryer) == null ? void 0 : _this$retryer3.continue();\n }\n\n addObserver(observer) {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer); // Stop the query from being garbage collected\n\n this.clearGcTimeout();\n this.cache.notify({\n type: 'observerAdded',\n query: this,\n observer\n });\n }\n }\n\n removeObserver(observer) {\n if (this.observers.includes(observer)) {\n this.observers = this.observers.filter(x => x !== observer);\n\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.retryer) {\n if (this.abortSignalConsumed) {\n this.retryer.cancel({\n revert: true\n });\n } else {\n this.retryer.cancelRetry();\n }\n }\n\n this.scheduleGc();\n }\n\n this.cache.notify({\n type: 'observerRemoved',\n query: this,\n observer\n });\n }\n }\n\n getObserversCount() {\n return this.observers.length;\n }\n\n invalidate() {\n if (!this.state.isInvalidated) {\n this.dispatch({\n type: 'invalidate'\n });\n }\n }\n\n fetch(options, fetchOptions) {\n var _this$options$behavio, _context$fetchOptions;\n\n if (this.state.fetchStatus !== 'idle') {\n if (this.state.dataUpdatedAt && fetchOptions != null && fetchOptions.cancelRefetch) {\n // Silently cancel current fetch if the user wants to cancel refetches\n this.cancel({\n silent: true\n });\n } else if (this.promise) {\n var _this$retryer4;\n\n // make sure that retries that were potentially cancelled due to unmounts can continue\n (_this$retryer4 = this.retryer) == null ? void 0 : _this$retryer4.continueRetry(); // Return current promise if we are already fetching\n\n return this.promise;\n }\n } // Update config if passed, otherwise the config from the last execution is used\n\n\n if (options) {\n this.setOptions(options);\n } // Use the options from the first observer with a query function if no function is found.\n // This can happen when the query is hydrated or created with setQueryData.\n\n\n if (!this.options.queryFn) {\n const observer = this.observers.find(x => x.options.queryFn);\n\n if (observer) {\n this.setOptions(observer.options);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!Array.isArray(this.options.queryKey)) {\n this.logger.error(\"As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']\");\n }\n }\n\n const abortController = getAbortController(); // Create query function context\n\n const queryFnContext = {\n queryKey: this.queryKey,\n pageParam: undefined,\n meta: this.meta\n }; // Adds an enumerable signal property to the object that\n // which sets abortSignalConsumed to true when the signal\n // is read.\n\n const addSignalProperty = object => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n if (abortController) {\n this.abortSignalConsumed = true;\n return abortController.signal;\n }\n\n return undefined;\n }\n });\n };\n\n addSignalProperty(queryFnContext); // Create fetch function\n\n const fetchFn = () => {\n if (!this.options.queryFn) {\n return Promise.reject(\"Missing queryFn for queryKey '\" + this.options.queryHash + \"'\");\n }\n\n this.abortSignalConsumed = false;\n return this.options.queryFn(queryFnContext);\n }; // Trigger behavior hook\n\n\n const context = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn\n };\n addSignalProperty(context);\n (_this$options$behavio = this.options.behavior) == null ? void 0 : _this$options$behavio.onFetch(context); // Store state in case the current fetch needs to be reverted\n\n this.revertState = this.state; // Set to fetching state if not already in it\n\n if (this.state.fetchStatus === 'idle' || this.state.fetchMeta !== ((_context$fetchOptions = context.fetchOptions) == null ? void 0 : _context$fetchOptions.meta)) {\n var _context$fetchOptions2;\n\n this.dispatch({\n type: 'fetch',\n meta: (_context$fetchOptions2 = context.fetchOptions) == null ? void 0 : _context$fetchOptions2.meta\n });\n }\n\n const onError = error => {\n // Optimistically update state if needed\n if (!(isCancelledError(error) && error.silent)) {\n this.dispatch({\n type: 'error',\n error: error\n });\n }\n\n if (!isCancelledError(error)) {\n var _this$cache$config$on, _this$cache$config, _this$cache$config$on2, _this$cache$config2;\n\n // Notify cache callback\n (_this$cache$config$on = (_this$cache$config = this.cache.config).onError) == null ? void 0 : _this$cache$config$on.call(_this$cache$config, error, this);\n (_this$cache$config$on2 = (_this$cache$config2 = this.cache.config).onSettled) == null ? void 0 : _this$cache$config$on2.call(_this$cache$config2, this.state.data, error, this);\n\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(error);\n }\n }\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc();\n }\n\n this.isFetchingOptimistic = false;\n }; // Try to fetch the data\n\n\n this.retryer = createRetryer({\n fn: context.fetchFn,\n abort: abortController == null ? void 0 : abortController.abort.bind(abortController),\n onSuccess: data => {\n var _this$cache$config$on3, _this$cache$config3, _this$cache$config$on4, _this$cache$config4;\n\n if (typeof data === 'undefined') {\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(\"Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: \" + this.queryHash);\n }\n\n onError(new Error(this.queryHash + \" data is undefined\"));\n return;\n }\n\n this.setData(data); // Notify cache callback\n\n (_this$cache$config$on3 = (_this$cache$config3 = this.cache.config).onSuccess) == null ? void 0 : _this$cache$config$on3.call(_this$cache$config3, data, this);\n (_this$cache$config$on4 = (_this$cache$config4 = this.cache.config).onSettled) == null ? void 0 : _this$cache$config$on4.call(_this$cache$config4, data, this.state.error, this);\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc();\n }\n\n this.isFetchingOptimistic = false;\n },\n onError,\n onFail: (failureCount, error) => {\n this.dispatch({\n type: 'failed',\n failureCount,\n error\n });\n },\n onPause: () => {\n this.dispatch({\n type: 'pause'\n });\n },\n onContinue: () => {\n this.dispatch({\n type: 'continue'\n });\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode\n });\n this.promise = this.retryer.promise;\n return this.promise;\n }\n\n dispatch(action) {\n const reducer = state => {\n var _action$meta, _action$dataUpdatedAt;\n\n switch (action.type) {\n case 'failed':\n return { ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error\n };\n\n case 'pause':\n return { ...state,\n fetchStatus: 'paused'\n };\n\n case 'continue':\n return { ...state,\n fetchStatus: 'fetching'\n };\n\n case 'fetch':\n return { ...state,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: (_action$meta = action.meta) != null ? _action$meta : null,\n fetchStatus: canFetch(this.options.networkMode) ? 'fetching' : 'paused',\n ...(!state.dataUpdatedAt && {\n error: null,\n status: 'loading'\n })\n };\n\n case 'success':\n return { ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: (_action$dataUpdatedAt = action.dataUpdatedAt) != null ? _action$dataUpdatedAt : Date.now(),\n error: null,\n isInvalidated: false,\n status: 'success',\n ...(!action.manual && {\n fetchStatus: 'idle',\n fetchFailureCount: 0,\n fetchFailureReason: null\n })\n };\n\n case 'error':\n const error = action.error;\n\n if (isCancelledError(error) && error.revert && this.revertState) {\n return { ...this.revertState,\n fetchStatus: 'idle'\n };\n }\n\n return { ...state,\n error: error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: 'idle',\n status: 'error'\n };\n\n case 'invalidate':\n return { ...state,\n isInvalidated: true\n };\n\n case 'setState':\n return { ...state,\n ...action.state\n };\n }\n };\n\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.observers.forEach(observer => {\n observer.onQueryUpdate(action);\n });\n this.cache.notify({\n query: this,\n type: 'updated',\n action\n });\n });\n }\n\n}\n\nfunction getDefaultState(options) {\n const data = typeof options.initialData === 'function' ? options.initialData() : options.initialData;\n const hasData = typeof data !== 'undefined';\n const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === 'function' ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt != null ? initialDataUpdatedAt : Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? 'success' : 'loading',\n fetchStatus: 'idle'\n };\n}\n\nexport { Query };\n//# sourceMappingURL=query.mjs.map\n","import { hashQueryKeyByOptions, parseFilterArgs, matchQuery } from './utils.mjs';\nimport { Query } from './query.mjs';\nimport { notifyManager } from './notifyManager.mjs';\nimport { Subscribable } from './subscribable.mjs';\n\n// CLASS\nclass QueryCache extends Subscribable {\n constructor(config) {\n super();\n this.config = config || {};\n this.queries = [];\n this.queriesMap = {};\n }\n\n build(client, options, state) {\n var _options$queryHash;\n\n const queryKey = options.queryKey;\n const queryHash = (_options$queryHash = options.queryHash) != null ? _options$queryHash : hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n\n if (!query) {\n query = new Query({\n cache: this,\n logger: client.getLogger(),\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n\n return query;\n }\n\n add(query) {\n if (!this.queriesMap[query.queryHash]) {\n this.queriesMap[query.queryHash] = query;\n this.queries.push(query);\n this.notify({\n type: 'added',\n query\n });\n }\n }\n\n remove(query) {\n const queryInMap = this.queriesMap[query.queryHash];\n\n if (queryInMap) {\n query.destroy();\n this.queries = this.queries.filter(x => x !== query);\n\n if (queryInMap === query) {\n delete this.queriesMap[query.queryHash];\n }\n\n this.notify({\n type: 'removed',\n query\n });\n }\n }\n\n clear() {\n notifyManager.batch(() => {\n this.queries.forEach(query => {\n this.remove(query);\n });\n });\n }\n\n get(queryHash) {\n return this.queriesMap[queryHash];\n }\n\n getAll() {\n return this.queries;\n }\n\n find(arg1, arg2) {\n const [filters] = parseFilterArgs(arg1, arg2);\n\n if (typeof filters.exact === 'undefined') {\n filters.exact = true;\n }\n\n return this.queries.find(query => matchQuery(filters, query));\n }\n\n findAll(arg1, arg2) {\n const [filters] = parseFilterArgs(arg1, arg2);\n return Object.keys(filters).length > 0 ? this.queries.filter(query => matchQuery(filters, query)) : this.queries;\n }\n\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach(({\n listener\n }) => {\n listener(event);\n });\n });\n }\n\n onFocus() {\n notifyManager.batch(() => {\n this.queries.forEach(query => {\n query.onFocus();\n });\n });\n }\n\n onOnline() {\n notifyManager.batch(() => {\n this.queries.forEach(query => {\n query.onOnline();\n });\n });\n }\n\n}\n\nexport { QueryCache };\n//# sourceMappingURL=queryCache.mjs.map\n","function infiniteQueryBehavior() {\n return {\n onFetch: context => {\n context.fetchFn = () => {\n var _context$fetchOptions, _context$fetchOptions2, _context$fetchOptions3, _context$fetchOptions4, _context$state$data, _context$state$data2;\n\n const refetchPage = (_context$fetchOptions = context.fetchOptions) == null ? void 0 : (_context$fetchOptions2 = _context$fetchOptions.meta) == null ? void 0 : _context$fetchOptions2.refetchPage;\n const fetchMore = (_context$fetchOptions3 = context.fetchOptions) == null ? void 0 : (_context$fetchOptions4 = _context$fetchOptions3.meta) == null ? void 0 : _context$fetchOptions4.fetchMore;\n const pageParam = fetchMore == null ? void 0 : fetchMore.pageParam;\n const isFetchingNextPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'forward';\n const isFetchingPreviousPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'backward';\n const oldPages = ((_context$state$data = context.state.data) == null ? void 0 : _context$state$data.pages) || [];\n const oldPageParams = ((_context$state$data2 = context.state.data) == null ? void 0 : _context$state$data2.pageParams) || [];\n let newPageParams = oldPageParams;\n let cancelled = false;\n\n const addSignalProperty = object => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n var _context$signal;\n\n if ((_context$signal = context.signal) != null && _context$signal.aborted) {\n cancelled = true;\n } else {\n var _context$signal2;\n\n (_context$signal2 = context.signal) == null ? void 0 : _context$signal2.addEventListener('abort', () => {\n cancelled = true;\n });\n }\n\n return context.signal;\n }\n });\n }; // Get query function\n\n\n const queryFn = context.options.queryFn || (() => Promise.reject(\"Missing queryFn for queryKey '\" + context.options.queryHash + \"'\"));\n\n const buildNewPages = (pages, param, page, previous) => {\n newPageParams = previous ? [param, ...newPageParams] : [...newPageParams, param];\n return previous ? [page, ...pages] : [...pages, page];\n }; // Create function to fetch a page\n\n\n const fetchPage = (pages, manual, param, previous) => {\n if (cancelled) {\n return Promise.reject('Cancelled');\n }\n\n if (typeof param === 'undefined' && !manual && pages.length) {\n return Promise.resolve(pages);\n }\n\n const queryFnContext = {\n queryKey: context.queryKey,\n pageParam: param,\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext);\n const queryFnResult = queryFn(queryFnContext);\n const promise = Promise.resolve(queryFnResult).then(page => buildNewPages(pages, param, page, previous));\n return promise;\n };\n\n let promise; // Fetch first page?\n\n if (!oldPages.length) {\n promise = fetchPage([]);\n } // Fetch next page?\n else if (isFetchingNextPage) {\n const manual = typeof pageParam !== 'undefined';\n const param = manual ? pageParam : getNextPageParam(context.options, oldPages);\n promise = fetchPage(oldPages, manual, param);\n } // Fetch previous page?\n else if (isFetchingPreviousPage) {\n const manual = typeof pageParam !== 'undefined';\n const param = manual ? pageParam : getPreviousPageParam(context.options, oldPages);\n promise = fetchPage(oldPages, manual, param, true);\n } // Refetch pages\n else {\n newPageParams = [];\n const manual = typeof context.options.getNextPageParam === 'undefined';\n const shouldFetchFirstPage = refetchPage && oldPages[0] ? refetchPage(oldPages[0], 0, oldPages) : true; // Fetch first page\n\n promise = shouldFetchFirstPage ? fetchPage([], manual, oldPageParams[0]) : Promise.resolve(buildNewPages([], oldPageParams[0], oldPages[0])); // Fetch remaining pages\n\n for (let i = 1; i < oldPages.length; i++) {\n promise = promise.then(pages => {\n const shouldFetchNextPage = refetchPage && oldPages[i] ? refetchPage(oldPages[i], i, oldPages) : true;\n\n if (shouldFetchNextPage) {\n const param = manual ? oldPageParams[i] : getNextPageParam(context.options, pages);\n return fetchPage(pages, manual, param);\n }\n\n return Promise.resolve(buildNewPages(pages, oldPageParams[i], oldPages[i]));\n });\n }\n }\n\n const finalPromise = promise.then(pages => ({\n pages,\n pageParams: newPageParams\n }));\n return finalPromise;\n };\n }\n };\n}\nfunction getNextPageParam(options, pages) {\n return options.getNextPageParam == null ? void 0 : options.getNextPageParam(pages[pages.length - 1], pages);\n}\nfunction getPreviousPageParam(options, pages) {\n return options.getPreviousPageParam == null ? void 0 : options.getPreviousPageParam(pages[0], pages);\n}\n/**\n * Checks if there is a next page.\n * Returns `undefined` if it cannot be determined.\n */\n\nfunction hasNextPage(options, pages) {\n if (options.getNextPageParam && Array.isArray(pages)) {\n const nextPageParam = getNextPageParam(options, pages);\n return typeof nextPageParam !== 'undefined' && nextPageParam !== null && nextPageParam !== false;\n }\n\n return;\n}\n/**\n * Checks if there is a previous page.\n * Returns `undefined` if it cannot be determined.\n */\n\nfunction hasPreviousPage(options, pages) {\n if (options.getPreviousPageParam && Array.isArray(pages)) {\n const previousPageParam = getPreviousPageParam(options, pages);\n return typeof previousPageParam !== 'undefined' && previousPageParam !== null && previousPageParam !== false;\n }\n\n return;\n}\n\nexport { getNextPageParam, getPreviousPageParam, hasNextPage, hasPreviousPage, infiniteQueryBehavior };\n//# sourceMappingURL=infiniteQueryBehavior.mjs.map\n","import { parseFilterArgs, parseQueryArgs, functionalUpdate, noop, hashQueryKey, partialMatchKey, hashQueryKeyByOptions } from './utils.mjs';\nimport { QueryCache } from './queryCache.mjs';\nimport { MutationCache } from './mutationCache.mjs';\nimport { focusManager } from './focusManager.mjs';\nimport { onlineManager } from './onlineManager.mjs';\nimport { notifyManager } from './notifyManager.mjs';\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior.mjs';\nimport { defaultLogger } from './logger.mjs';\n\n// CLASS\nclass QueryClient {\n constructor(config = {}) {\n this.queryCache = config.queryCache || new QueryCache();\n this.mutationCache = config.mutationCache || new MutationCache();\n this.logger = config.logger || defaultLogger;\n this.defaultOptions = config.defaultOptions || {};\n this.queryDefaults = [];\n this.mutationDefaults = [];\n this.mountCount = 0;\n\n if (process.env.NODE_ENV !== 'production' && config.logger) {\n this.logger.error(\"Passing a custom logger has been deprecated and will be removed in the next major version.\");\n }\n }\n\n mount() {\n this.mountCount++;\n if (this.mountCount !== 1) return;\n this.unsubscribeFocus = focusManager.subscribe(() => {\n if (focusManager.isFocused()) {\n this.resumePausedMutations();\n this.queryCache.onFocus();\n }\n });\n this.unsubscribeOnline = onlineManager.subscribe(() => {\n if (onlineManager.isOnline()) {\n this.resumePausedMutations();\n this.queryCache.onOnline();\n }\n });\n }\n\n unmount() {\n var _this$unsubscribeFocu, _this$unsubscribeOnli;\n\n this.mountCount--;\n if (this.mountCount !== 0) return;\n (_this$unsubscribeFocu = this.unsubscribeFocus) == null ? void 0 : _this$unsubscribeFocu.call(this);\n this.unsubscribeFocus = undefined;\n (_this$unsubscribeOnli = this.unsubscribeOnline) == null ? void 0 : _this$unsubscribeOnli.call(this);\n this.unsubscribeOnline = undefined;\n }\n\n isFetching(arg1, arg2) {\n const [filters] = parseFilterArgs(arg1, arg2);\n filters.fetchStatus = 'fetching';\n return this.queryCache.findAll(filters).length;\n }\n\n isMutating(filters) {\n return this.mutationCache.findAll({ ...filters,\n fetching: true\n }).length;\n }\n\n getQueryData(queryKey, filters) {\n var _this$queryCache$find;\n\n return (_this$queryCache$find = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find.state.data;\n }\n\n ensureQueryData(arg1, arg2, arg3) {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n const cachedData = this.getQueryData(parsedOptions.queryKey);\n return cachedData ? Promise.resolve(cachedData) : this.fetchQuery(parsedOptions);\n }\n\n getQueriesData(queryKeyOrFilters) {\n return this.getQueryCache().findAll(queryKeyOrFilters).map(({\n queryKey,\n state\n }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n\n setQueryData(queryKey, updater, options) {\n const query = this.queryCache.find(queryKey);\n const prevData = query == null ? void 0 : query.state.data;\n const data = functionalUpdate(updater, prevData);\n\n if (typeof data === 'undefined') {\n return undefined;\n }\n\n const parsedOptions = parseQueryArgs(queryKey);\n const defaultedOptions = this.defaultQueryOptions(parsedOptions);\n return this.queryCache.build(this, defaultedOptions).setData(data, { ...options,\n manual: true\n });\n }\n\n setQueriesData(queryKeyOrFilters, updater, options) {\n return notifyManager.batch(() => this.getQueryCache().findAll(queryKeyOrFilters).map(({\n queryKey\n }) => [queryKey, this.setQueryData(queryKey, updater, options)]));\n }\n\n getQueryState(queryKey, filters) {\n var _this$queryCache$find2;\n\n return (_this$queryCache$find2 = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find2.state;\n }\n\n removeQueries(arg1, arg2) {\n const [filters] = parseFilterArgs(arg1, arg2);\n const queryCache = this.queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach(query => {\n queryCache.remove(query);\n });\n });\n }\n\n resetQueries(arg1, arg2, arg3) {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3);\n const queryCache = this.queryCache;\n const refetchFilters = {\n type: 'active',\n ...filters\n };\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach(query => {\n query.reset();\n });\n return this.refetchQueries(refetchFilters, options);\n });\n }\n\n cancelQueries(arg1, arg2, arg3) {\n const [filters, cancelOptions = {}] = parseFilterArgs(arg1, arg2, arg3);\n\n if (typeof cancelOptions.revert === 'undefined') {\n cancelOptions.revert = true;\n }\n\n const promises = notifyManager.batch(() => this.queryCache.findAll(filters).map(query => query.cancel(cancelOptions)));\n return Promise.all(promises).then(noop).catch(noop);\n }\n\n invalidateQueries(arg1, arg2, arg3) {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3);\n return notifyManager.batch(() => {\n var _ref, _filters$refetchType;\n\n this.queryCache.findAll(filters).forEach(query => {\n query.invalidate();\n });\n\n if (filters.refetchType === 'none') {\n return Promise.resolve();\n }\n\n const refetchFilters = { ...filters,\n type: (_ref = (_filters$refetchType = filters.refetchType) != null ? _filters$refetchType : filters.type) != null ? _ref : 'active'\n };\n return this.refetchQueries(refetchFilters, options);\n });\n }\n\n refetchQueries(arg1, arg2, arg3) {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3);\n const promises = notifyManager.batch(() => this.queryCache.findAll(filters).filter(query => !query.isDisabled()).map(query => {\n var _options$cancelRefetc;\n\n return query.fetch(undefined, { ...options,\n cancelRefetch: (_options$cancelRefetc = options == null ? void 0 : options.cancelRefetch) != null ? _options$cancelRefetc : true,\n meta: {\n refetchPage: filters.refetchPage\n }\n });\n }));\n let promise = Promise.all(promises).then(noop);\n\n if (!(options != null && options.throwOnError)) {\n promise = promise.catch(noop);\n }\n\n return promise;\n }\n\n fetchQuery(arg1, arg2, arg3) {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n const defaultedOptions = this.defaultQueryOptions(parsedOptions); // https://github.com/tannerlinsley/react-query/issues/652\n\n if (typeof defaultedOptions.retry === 'undefined') {\n defaultedOptions.retry = false;\n }\n\n const query = this.queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(defaultedOptions.staleTime) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n\n prefetchQuery(arg1, arg2, arg3) {\n return this.fetchQuery(arg1, arg2, arg3).then(noop).catch(noop);\n }\n\n fetchInfiniteQuery(arg1, arg2, arg3) {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n parsedOptions.behavior = infiniteQueryBehavior();\n return this.fetchQuery(parsedOptions);\n }\n\n prefetchInfiniteQuery(arg1, arg2, arg3) {\n return this.fetchInfiniteQuery(arg1, arg2, arg3).then(noop).catch(noop);\n }\n\n resumePausedMutations() {\n return this.mutationCache.resumePausedMutations();\n }\n\n getQueryCache() {\n return this.queryCache;\n }\n\n getMutationCache() {\n return this.mutationCache;\n }\n\n getLogger() {\n return this.logger;\n }\n\n getDefaultOptions() {\n return this.defaultOptions;\n }\n\n setDefaultOptions(options) {\n this.defaultOptions = options;\n }\n\n setQueryDefaults(queryKey, options) {\n const result = this.queryDefaults.find(x => hashQueryKey(queryKey) === hashQueryKey(x.queryKey));\n\n if (result) {\n result.defaultOptions = options;\n } else {\n this.queryDefaults.push({\n queryKey,\n defaultOptions: options\n });\n }\n }\n\n getQueryDefaults(queryKey) {\n if (!queryKey) {\n return undefined;\n } // Get the first matching defaults\n\n\n const firstMatchingDefaults = this.queryDefaults.find(x => partialMatchKey(queryKey, x.queryKey)); // Additional checks and error in dev mode\n\n if (process.env.NODE_ENV !== 'production') {\n // Retrieve all matching defaults for the given key\n const matchingDefaults = this.queryDefaults.filter(x => partialMatchKey(queryKey, x.queryKey)); // It is ok not having defaults, but it is error prone to have more than 1 default for a given key\n\n if (matchingDefaults.length > 1) {\n this.logger.error(\"[QueryClient] Several query defaults match with key '\" + JSON.stringify(queryKey) + \"'. The first matching query defaults are used. Please check how query defaults are registered. Order does matter here. cf. https://react-query.tanstack.com/reference/QueryClient#queryclientsetquerydefaults.\");\n }\n }\n\n return firstMatchingDefaults == null ? void 0 : firstMatchingDefaults.defaultOptions;\n }\n\n setMutationDefaults(mutationKey, options) {\n const result = this.mutationDefaults.find(x => hashQueryKey(mutationKey) === hashQueryKey(x.mutationKey));\n\n if (result) {\n result.defaultOptions = options;\n } else {\n this.mutationDefaults.push({\n mutationKey,\n defaultOptions: options\n });\n }\n }\n\n getMutationDefaults(mutationKey) {\n if (!mutationKey) {\n return undefined;\n } // Get the first matching defaults\n\n\n const firstMatchingDefaults = this.mutationDefaults.find(x => partialMatchKey(mutationKey, x.mutationKey)); // Additional checks and error in dev mode\n\n if (process.env.NODE_ENV !== 'production') {\n // Retrieve all matching defaults for the given key\n const matchingDefaults = this.mutationDefaults.filter(x => partialMatchKey(mutationKey, x.mutationKey)); // It is ok not having defaults, but it is error prone to have more than 1 default for a given key\n\n if (matchingDefaults.length > 1) {\n this.logger.error(\"[QueryClient] Several mutation defaults match with key '\" + JSON.stringify(mutationKey) + \"'. The first matching mutation defaults are used. Please check how mutation defaults are registered. Order does matter here. cf. https://react-query.tanstack.com/reference/QueryClient#queryclientsetmutationdefaults.\");\n }\n }\n\n return firstMatchingDefaults == null ? void 0 : firstMatchingDefaults.defaultOptions;\n }\n\n defaultQueryOptions(options) {\n if (options != null && options._defaulted) {\n return options;\n }\n\n const defaultedOptions = { ...this.defaultOptions.queries,\n ...this.getQueryDefaults(options == null ? void 0 : options.queryKey),\n ...options,\n _defaulted: true\n };\n\n if (!defaultedOptions.queryHash && defaultedOptions.queryKey) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(defaultedOptions.queryKey, defaultedOptions);\n } // dependent default values\n\n\n if (typeof defaultedOptions.refetchOnReconnect === 'undefined') {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== 'always';\n }\n\n if (typeof defaultedOptions.useErrorBoundary === 'undefined') {\n defaultedOptions.useErrorBoundary = !!defaultedOptions.suspense;\n }\n\n return defaultedOptions;\n }\n\n defaultMutationOptions(options) {\n if (options != null && options._defaulted) {\n return options;\n }\n\n return { ...this.defaultOptions.mutations,\n ...this.getMutationDefaults(options == null ? void 0 : options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n\n clear() {\n this.queryCache.clear();\n this.mutationCache.clear();\n }\n\n}\n\nexport { QueryClient };\n//# sourceMappingURL=queryClient.mjs.map\n","import { isValidTimeout, isServer } from './utils.mjs';\n\nclass Removable {\n destroy() {\n this.clearGcTimeout();\n }\n\n scheduleGc() {\n this.clearGcTimeout();\n\n if (isValidTimeout(this.cacheTime)) {\n this.gcTimeout = setTimeout(() => {\n this.optionalRemove();\n }, this.cacheTime);\n }\n }\n\n updateCacheTime(newCacheTime) {\n // Default to 5 minutes (Infinity for server-side) if no cache time is set\n this.cacheTime = Math.max(this.cacheTime || 0, newCacheTime != null ? newCacheTime : isServer ? Infinity : 5 * 60 * 1000);\n }\n\n clearGcTimeout() {\n if (this.gcTimeout) {\n clearTimeout(this.gcTimeout);\n this.gcTimeout = undefined;\n }\n }\n\n}\n\nexport { Removable };\n//# sourceMappingURL=removable.mjs.map\n","import { focusManager } from './focusManager.mjs';\nimport { onlineManager } from './onlineManager.mjs';\nimport { sleep } from './utils.mjs';\n\nfunction defaultRetryDelay(failureCount) {\n return Math.min(1000 * 2 ** failureCount, 30000);\n}\n\nfunction canFetch(networkMode) {\n return (networkMode != null ? networkMode : 'online') === 'online' ? onlineManager.isOnline() : true;\n}\nclass CancelledError {\n constructor(options) {\n this.revert = options == null ? void 0 : options.revert;\n this.silent = options == null ? void 0 : options.silent;\n }\n\n}\nfunction isCancelledError(value) {\n return value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n let isRetryCancelled = false;\n let failureCount = 0;\n let isResolved = false;\n let continueFn;\n let promiseResolve;\n let promiseReject;\n const promise = new Promise((outerResolve, outerReject) => {\n promiseResolve = outerResolve;\n promiseReject = outerReject;\n });\n\n const cancel = cancelOptions => {\n if (!isResolved) {\n reject(new CancelledError(cancelOptions));\n config.abort == null ? void 0 : config.abort();\n }\n };\n\n const cancelRetry = () => {\n isRetryCancelled = true;\n };\n\n const continueRetry = () => {\n isRetryCancelled = false;\n };\n\n const shouldPause = () => !focusManager.isFocused() || config.networkMode !== 'always' && !onlineManager.isOnline();\n\n const resolve = value => {\n if (!isResolved) {\n isResolved = true;\n config.onSuccess == null ? void 0 : config.onSuccess(value);\n continueFn == null ? void 0 : continueFn();\n promiseResolve(value);\n }\n };\n\n const reject = value => {\n if (!isResolved) {\n isResolved = true;\n config.onError == null ? void 0 : config.onError(value);\n continueFn == null ? void 0 : continueFn();\n promiseReject(value);\n }\n };\n\n const pause = () => {\n return new Promise(continueResolve => {\n continueFn = value => {\n const canContinue = isResolved || !shouldPause();\n\n if (canContinue) {\n continueResolve(value);\n }\n\n return canContinue;\n };\n\n config.onPause == null ? void 0 : config.onPause();\n }).then(() => {\n continueFn = undefined;\n\n if (!isResolved) {\n config.onContinue == null ? void 0 : config.onContinue();\n }\n });\n }; // Create loop function\n\n\n const run = () => {\n // Do nothing if already resolved\n if (isResolved) {\n return;\n }\n\n let promiseOrValue; // Execute query\n\n try {\n promiseOrValue = config.fn();\n } catch (error) {\n promiseOrValue = Promise.reject(error);\n }\n\n Promise.resolve(promiseOrValue).then(resolve).catch(error => {\n var _config$retry, _config$retryDelay;\n\n // Stop if the fetch is already resolved\n if (isResolved) {\n return;\n } // Do we need to retry the request?\n\n\n const retry = (_config$retry = config.retry) != null ? _config$retry : 3;\n const retryDelay = (_config$retryDelay = config.retryDelay) != null ? _config$retryDelay : defaultRetryDelay;\n const delay = typeof retryDelay === 'function' ? retryDelay(failureCount, error) : retryDelay;\n const shouldRetry = retry === true || typeof retry === 'number' && failureCount < retry || typeof retry === 'function' && retry(failureCount, error);\n\n if (isRetryCancelled || !shouldRetry) {\n // We are done if the query does not need to be retried\n reject(error);\n return;\n }\n\n failureCount++; // Notify on fail\n\n config.onFail == null ? void 0 : config.onFail(failureCount, error); // Delay\n\n sleep(delay) // Pause if the document is not visible or when the device is offline\n .then(() => {\n if (shouldPause()) {\n return pause();\n }\n\n return;\n }).then(() => {\n if (isRetryCancelled) {\n reject(error);\n } else {\n run();\n }\n });\n });\n }; // Start loop\n\n\n if (canFetch(config.networkMode)) {\n run();\n } else {\n pause().then(run);\n }\n\n return {\n promise,\n cancel,\n continue: () => {\n const didContinue = continueFn == null ? void 0 : continueFn();\n return didContinue ? promise : Promise.resolve();\n },\n cancelRetry,\n continueRetry\n };\n}\n\nexport { CancelledError, canFetch, createRetryer, isCancelledError };\n//# sourceMappingURL=retryer.mjs.map\n","class Subscribable {\n constructor() {\n this.listeners = new Set();\n this.subscribe = this.subscribe.bind(this);\n }\n\n subscribe(listener) {\n const identity = {\n listener\n };\n this.listeners.add(identity);\n this.onSubscribe();\n return () => {\n this.listeners.delete(identity);\n this.onUnsubscribe();\n };\n }\n\n hasListeners() {\n return this.listeners.size > 0;\n }\n\n onSubscribe() {// Do nothing\n }\n\n onUnsubscribe() {// Do nothing\n }\n\n}\n\nexport { Subscribable };\n//# sourceMappingURL=subscribable.mjs.map\n","// TYPES\n// UTILS\nconst isServer = typeof window === 'undefined' || 'Deno' in window;\nfunction noop() {\n return undefined;\n}\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n return typeof value === 'number' && value >= 0 && value !== Infinity;\n}\nfunction difference(array1, array2) {\n return array1.filter(x => !array2.includes(x));\n}\nfunction replaceAt(array, index, value) {\n const copy = array.slice(0);\n copy[index] = value;\n return copy;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction parseQueryArgs(arg1, arg2, arg3) {\n if (!isQueryKey(arg1)) {\n return arg1;\n }\n\n if (typeof arg2 === 'function') {\n return { ...arg3,\n queryKey: arg1,\n queryFn: arg2\n };\n }\n\n return { ...arg2,\n queryKey: arg1\n };\n}\nfunction parseMutationArgs(arg1, arg2, arg3) {\n if (isQueryKey(arg1)) {\n if (typeof arg2 === 'function') {\n return { ...arg3,\n mutationKey: arg1,\n mutationFn: arg2\n };\n }\n\n return { ...arg2,\n mutationKey: arg1\n };\n }\n\n if (typeof arg1 === 'function') {\n return { ...arg2,\n mutationFn: arg1\n };\n }\n\n return { ...arg1\n };\n}\nfunction parseFilterArgs(arg1, arg2, arg3) {\n return isQueryKey(arg1) ? [{ ...arg2,\n queryKey: arg1\n }, arg3] : [arg1 || {}, arg2];\n}\nfunction parseMutationFilterArgs(arg1, arg2, arg3) {\n return isQueryKey(arg1) ? [{ ...arg2,\n mutationKey: arg1\n }, arg3] : [arg1 || {}, arg2];\n}\nfunction matchQuery(filters, query) {\n const {\n type = 'all',\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale\n } = filters;\n\n if (isQueryKey(queryKey)) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false;\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false;\n }\n }\n\n if (type !== 'all') {\n const isActive = query.isActive();\n\n if (type === 'active' && !isActive) {\n return false;\n }\n\n if (type === 'inactive' && isActive) {\n return false;\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false;\n }\n\n if (typeof fetchStatus !== 'undefined' && fetchStatus !== query.state.fetchStatus) {\n return false;\n }\n\n if (predicate && !predicate(query)) {\n return false;\n }\n\n return true;\n}\nfunction matchMutation(filters, mutation) {\n const {\n exact,\n fetching,\n predicate,\n mutationKey\n } = filters;\n\n if (isQueryKey(mutationKey)) {\n if (!mutation.options.mutationKey) {\n return false;\n }\n\n if (exact) {\n if (hashQueryKey(mutation.options.mutationKey) !== hashQueryKey(mutationKey)) {\n return false;\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false;\n }\n }\n\n if (typeof fetching === 'boolean' && mutation.state.status === 'loading' !== fetching) {\n return false;\n }\n\n if (predicate && !predicate(mutation)) {\n return false;\n }\n\n return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n const hashFn = (options == null ? void 0 : options.queryKeyHashFn) || hashQueryKey;\n return hashFn(queryKey);\n}\n/**\n * Default query keys hash function.\n * Hashes the value into a stable hash.\n */\n\nfunction hashQueryKey(queryKey) {\n return JSON.stringify(queryKey, (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n result[key] = val[key];\n return result;\n }, {}) : val);\n}\n/**\n * Checks if key `b` partially matches with key `a`.\n */\n\nfunction partialMatchKey(a, b) {\n return partialDeepEqual(a, b);\n}\n/**\n * Checks if `b` partially matches with `a`.\n */\n\nfunction partialDeepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (typeof a !== typeof b) {\n return false;\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some(key => !partialDeepEqual(a[key], b[key]));\n }\n\n return false;\n}\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\n\nfunction replaceEqualDeep(a, b) {\n if (a === b) {\n return a;\n }\n\n const array = isPlainArray(a) && isPlainArray(b);\n\n if (array || isPlainObject(a) && isPlainObject(b)) {\n const aSize = array ? a.length : Object.keys(a).length;\n const bItems = array ? b : Object.keys(b);\n const bSize = bItems.length;\n const copy = array ? [] : {};\n let equalItems = 0;\n\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i];\n copy[key] = replaceEqualDeep(a[key], b[key]);\n\n if (copy[key] === a[key]) {\n equalItems++;\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy;\n }\n\n return b;\n}\n/**\n * Shallow compare objects. Only works with objects that always have the same properties.\n */\n\nfunction shallowEqualObjects(a, b) {\n if (a && !b || b && !a) {\n return false;\n }\n\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n\n return true;\n}\nfunction isPlainArray(value) {\n return Array.isArray(value) && value.length === Object.keys(value).length;\n} // Copied from: https://github.com/jonschlinkert/is-plain-object\n\nfunction isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n } // If has modified constructor\n\n\n const ctor = o.constructor;\n\n if (typeof ctor === 'undefined') {\n return true;\n } // If has modified prototype\n\n\n const prot = ctor.prototype;\n\n if (!hasObjectPrototype(prot)) {\n return false;\n } // If constructor does not have an Object-specific method\n\n\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false;\n } // Most likely a plain Object\n\n\n return true;\n}\n\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isQueryKey(value) {\n return Array.isArray(value);\n}\nfunction isError(value) {\n return value instanceof Error;\n}\nfunction sleep(timeout) {\n return new Promise(resolve => {\n setTimeout(resolve, timeout);\n });\n}\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\n\nfunction scheduleMicrotask(callback) {\n sleep(0).then(callback);\n}\nfunction getAbortController() {\n if (typeof AbortController === 'function') {\n return new AbortController();\n }\n\n return;\n}\nfunction replaceData(prevData, data, options) {\n // Use prev data if an isDataEqual function is defined and returns `true`\n if (options.isDataEqual != null && options.isDataEqual(prevData, data)) {\n return prevData;\n } else if (typeof options.structuralSharing === 'function') {\n return options.structuralSharing(prevData, data);\n } else if (options.structuralSharing !== false) {\n // Structurally share data between prev and new data if needed\n return replaceEqualDeep(prevData, data);\n }\n\n return data;\n}\n\nexport { difference, functionalUpdate, getAbortController, hashQueryKey, hashQueryKeyByOptions, isError, isPlainArray, isPlainObject, isQueryKey, isServer, isValidTimeout, matchMutation, matchQuery, noop, parseFilterArgs, parseMutationArgs, parseMutationFilterArgs, parseQueryArgs, partialDeepEqual, partialMatchKey, replaceAt, replaceData, replaceEqualDeep, scheduleMicrotask, shallowEqualObjects, sleep, timeUntilStale };\n//# sourceMappingURL=utils.mjs.map\n","'use client';\nimport { ReactQueryDevtools as ReactQueryDevtools$1, ReactQueryDevtoolsPanel as ReactQueryDevtoolsPanel$1 } from './devtools.mjs';\n\nconst ReactQueryDevtools = process.env.NODE_ENV !== 'development' ? function () {\n return null;\n} : ReactQueryDevtools$1;\nconst ReactQueryDevtoolsPanel = process.env.NODE_ENV !== 'development' ? function () {\n return null;\n} : ReactQueryDevtoolsPanel$1;\n\nexport { ReactQueryDevtools, ReactQueryDevtoolsPanel };\n//# sourceMappingURL=index.mjs.map\n","'use client';\nimport * as React from 'react';\n\nconst defaultContext = /*#__PURE__*/React.createContext(undefined);\nconst QueryClientSharingContext = /*#__PURE__*/React.createContext(false); // If we are given a context, we will use it.\n// Otherwise, if contextSharing is on, we share the first and at least one\n// instance of the context across the window\n// to ensure that if React Query is used across\n// different bundles or microfrontends they will\n// all use the same **instance** of context, regardless\n// of module scoping.\n\nfunction getQueryClientContext(context, contextSharing) {\n if (context) {\n return context;\n }\n\n if (contextSharing && typeof window !== 'undefined') {\n if (!window.ReactQueryClientContext) {\n window.ReactQueryClientContext = defaultContext;\n }\n\n return window.ReactQueryClientContext;\n }\n\n return defaultContext;\n}\n\nconst useQueryClient = ({\n context\n} = {}) => {\n const queryClient = React.useContext(getQueryClientContext(context, React.useContext(QueryClientSharingContext)));\n\n if (!queryClient) {\n throw new Error('No QueryClient set, use QueryClientProvider to set one');\n }\n\n return queryClient;\n};\nconst QueryClientProvider = ({\n client,\n children,\n context,\n contextSharing = false\n}) => {\n React.useEffect(() => {\n client.mount();\n return () => {\n client.unmount();\n };\n }, [client]);\n\n if (process.env.NODE_ENV !== 'production' && contextSharing) {\n client.getLogger().error(\"The contextSharing option has been deprecated and will be removed in the next major version\");\n }\n\n const Context = getQueryClientContext(context, contextSharing);\n return /*#__PURE__*/React.createElement(QueryClientSharingContext.Provider, {\n value: !context && contextSharing\n }, /*#__PURE__*/React.createElement(Context.Provider, {\n value: client\n }, children));\n};\n\nexport { QueryClientProvider, defaultContext, useQueryClient };\n//# sourceMappingURL=QueryClientProvider.mjs.map\n","import { getDefaultState } from './mutation.mjs';\nimport { notifyManager } from './notifyManager.mjs';\nimport { Subscribable } from './subscribable.mjs';\nimport { shallowEqualObjects } from './utils.mjs';\n\n// CLASS\nclass MutationObserver extends Subscribable {\n constructor(client, options) {\n super();\n this.client = client;\n this.setOptions(options);\n this.bindMethods();\n this.updateResult();\n }\n\n bindMethods() {\n this.mutate = this.mutate.bind(this);\n this.reset = this.reset.bind(this);\n }\n\n setOptions(options) {\n var _this$currentMutation;\n\n const prevOptions = this.options;\n this.options = this.client.defaultMutationOptions(options);\n\n if (!shallowEqualObjects(prevOptions, this.options)) {\n this.client.getMutationCache().notify({\n type: 'observerOptionsUpdated',\n mutation: this.currentMutation,\n observer: this\n });\n }\n\n (_this$currentMutation = this.currentMutation) == null ? void 0 : _this$currentMutation.setOptions(this.options);\n }\n\n onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$currentMutation2;\n\n (_this$currentMutation2 = this.currentMutation) == null ? void 0 : _this$currentMutation2.removeObserver(this);\n }\n }\n\n onMutationUpdate(action) {\n this.updateResult(); // Determine which callbacks to trigger\n\n const notifyOptions = {\n listeners: true\n };\n\n if (action.type === 'success') {\n notifyOptions.onSuccess = true;\n } else if (action.type === 'error') {\n notifyOptions.onError = true;\n }\n\n this.notify(notifyOptions);\n }\n\n getCurrentResult() {\n return this.currentResult;\n }\n\n reset() {\n this.currentMutation = undefined;\n this.updateResult();\n this.notify({\n listeners: true\n });\n }\n\n mutate(variables, options) {\n this.mutateOptions = options;\n\n if (this.currentMutation) {\n this.currentMutation.removeObserver(this);\n }\n\n this.currentMutation = this.client.getMutationCache().build(this.client, { ...this.options,\n variables: typeof variables !== 'undefined' ? variables : this.options.variables\n });\n this.currentMutation.addObserver(this);\n return this.currentMutation.execute();\n }\n\n updateResult() {\n const state = this.currentMutation ? this.currentMutation.state : getDefaultState();\n const result = { ...state,\n isLoading: state.status === 'loading',\n isSuccess: state.status === 'success',\n isError: state.status === 'error',\n isIdle: state.status === 'idle',\n mutate: this.mutate,\n reset: this.reset\n };\n this.currentResult = result;\n }\n\n notify(options) {\n notifyManager.batch(() => {\n // First trigger the mutate callbacks\n if (this.mutateOptions && this.hasListeners()) {\n if (options.onSuccess) {\n var _this$mutateOptions$o, _this$mutateOptions, _this$mutateOptions$o2, _this$mutateOptions2;\n\n (_this$mutateOptions$o = (_this$mutateOptions = this.mutateOptions).onSuccess) == null ? void 0 : _this$mutateOptions$o.call(_this$mutateOptions, this.currentResult.data, this.currentResult.variables, this.currentResult.context);\n (_this$mutateOptions$o2 = (_this$mutateOptions2 = this.mutateOptions).onSettled) == null ? void 0 : _this$mutateOptions$o2.call(_this$mutateOptions2, this.currentResult.data, null, this.currentResult.variables, this.currentResult.context);\n } else if (options.onError) {\n var _this$mutateOptions$o3, _this$mutateOptions3, _this$mutateOptions$o4, _this$mutateOptions4;\n\n (_this$mutateOptions$o3 = (_this$mutateOptions3 = this.mutateOptions).onError) == null ? void 0 : _this$mutateOptions$o3.call(_this$mutateOptions3, this.currentResult.error, this.currentResult.variables, this.currentResult.context);\n (_this$mutateOptions$o4 = (_this$mutateOptions4 = this.mutateOptions).onSettled) == null ? void 0 : _this$mutateOptions$o4.call(_this$mutateOptions4, undefined, this.currentResult.error, this.currentResult.variables, this.currentResult.context);\n }\n } // Then trigger the listeners\n\n\n if (options.listeners) {\n this.listeners.forEach(({\n listener\n }) => {\n listener(this.currentResult);\n });\n }\n });\n }\n\n}\n\nexport { MutationObserver };\n//# sourceMappingURL=mutationObserver.mjs.map\n","'use client';\nimport * as React from 'react';\nimport { parseMutationArgs, MutationObserver, notifyManager } from '@tanstack/query-core';\nimport { useSyncExternalStore } from './useSyncExternalStore.mjs';\nimport { useQueryClient } from './QueryClientProvider.mjs';\nimport { shouldThrowError } from './utils.mjs';\n\nfunction useMutation(arg1, arg2, arg3) {\n const options = parseMutationArgs(arg1, arg2, arg3);\n const queryClient = useQueryClient({\n context: options.context\n });\n const [observer] = React.useState(() => new MutationObserver(queryClient, options));\n React.useEffect(() => {\n observer.setOptions(options);\n }, [observer, options]);\n const result = useSyncExternalStore(React.useCallback(onStoreChange => observer.subscribe(notifyManager.batchCalls(onStoreChange)), [observer]), () => observer.getCurrentResult(), () => observer.getCurrentResult());\n const mutate = React.useCallback((variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop);\n }, [observer]);\n\n if (result.error && shouldThrowError(observer.options.useErrorBoundary, [result.error])) {\n throw result.error;\n }\n\n return { ...result,\n mutate,\n mutateAsync: result.mutate\n };\n} // eslint-disable-next-line @typescript-eslint/no-empty-function\n\nfunction noop() {}\n\nexport { useMutation };\n//# sourceMappingURL=useMutation.mjs.map\n","import { shallowEqualObjects, noop, isServer, isValidTimeout, timeUntilStale, replaceData } from './utils.mjs';\nimport { notifyManager } from './notifyManager.mjs';\nimport { focusManager } from './focusManager.mjs';\nimport { Subscribable } from './subscribable.mjs';\nimport { canFetch, isCancelledError } from './retryer.mjs';\n\nclass QueryObserver extends Subscribable {\n constructor(client, options) {\n super();\n this.client = client;\n this.options = options;\n this.trackedProps = new Set();\n this.selectError = null;\n this.bindMethods();\n this.setOptions(options);\n }\n\n bindMethods() {\n this.remove = this.remove.bind(this);\n this.refetch = this.refetch.bind(this);\n }\n\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.currentQuery.addObserver(this);\n\n if (shouldFetchOnMount(this.currentQuery, this.options)) {\n this.executeFetch();\n }\n\n this.updateTimers();\n }\n }\n\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.destroy();\n }\n }\n\n shouldFetchOnReconnect() {\n return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnReconnect);\n }\n\n shouldFetchOnWindowFocus() {\n return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnWindowFocus);\n }\n\n destroy() {\n this.listeners = new Set();\n this.clearStaleTimeout();\n this.clearRefetchInterval();\n this.currentQuery.removeObserver(this);\n }\n\n setOptions(options, notifyOptions) {\n const prevOptions = this.options;\n const prevQuery = this.currentQuery;\n this.options = this.client.defaultQueryOptions(options);\n\n if (process.env.NODE_ENV !== 'production' && typeof (options == null ? void 0 : options.isDataEqual) !== 'undefined') {\n this.client.getLogger().error(\"The isDataEqual option has been deprecated and will be removed in the next major version. You can achieve the same functionality by passing a function as the structuralSharing option\");\n }\n\n if (!shallowEqualObjects(prevOptions, this.options)) {\n this.client.getQueryCache().notify({\n type: 'observerOptionsUpdated',\n query: this.currentQuery,\n observer: this\n });\n }\n\n if (typeof this.options.enabled !== 'undefined' && typeof this.options.enabled !== 'boolean') {\n throw new Error('Expected enabled to be a boolean');\n } // Keep previous query key if the user does not supply one\n\n\n if (!this.options.queryKey) {\n this.options.queryKey = prevOptions.queryKey;\n }\n\n this.updateQuery();\n const mounted = this.hasListeners(); // Fetch if there are subscribers\n\n if (mounted && shouldFetchOptionally(this.currentQuery, prevQuery, this.options, prevOptions)) {\n this.executeFetch();\n } // Update result\n\n\n this.updateResult(notifyOptions); // Update stale interval if needed\n\n if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || this.options.staleTime !== prevOptions.staleTime)) {\n this.updateStaleTimeout();\n }\n\n const nextRefetchInterval = this.computeRefetchInterval(); // Update refetch interval if needed\n\n if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || nextRefetchInterval !== this.currentRefetchInterval)) {\n this.updateRefetchInterval(nextRefetchInterval);\n }\n }\n\n getOptimisticResult(options) {\n const query = this.client.getQueryCache().build(this.client, options);\n const result = this.createResult(query, options);\n\n if (shouldAssignObserverCurrentProperties(this, result, options)) {\n // this assigns the optimistic result to the current Observer\n // because if the query function changes, useQuery will be performing\n // an effect where it would fetch again.\n // When the fetch finishes, we perform a deep data cloning in order\n // to reuse objects references. This deep data clone is performed against\n // the `observer.currentResult.data` property\n // When QueryKey changes, we refresh the query and get new `optimistic`\n // result, while we leave the `observer.currentResult`, so when new data\n // arrives, it finds the old `observer.currentResult` which is related\n // to the old QueryKey. Which means that currentResult and selectData are\n // out of sync already.\n // To solve this, we move the cursor of the currentResult everytime\n // an observer reads an optimistic value.\n // When keeping the previous data, the result doesn't change until new\n // data arrives.\n this.currentResult = result;\n this.currentResultOptions = this.options;\n this.currentResultState = this.currentQuery.state;\n }\n\n return result;\n }\n\n getCurrentResult() {\n return this.currentResult;\n }\n\n trackResult(result) {\n const trackedResult = {};\n Object.keys(result).forEach(key => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.trackedProps.add(key);\n return result[key];\n }\n });\n });\n return trackedResult;\n }\n\n getCurrentQuery() {\n return this.currentQuery;\n }\n\n remove() {\n this.client.getQueryCache().remove(this.currentQuery);\n }\n\n refetch({\n refetchPage,\n ...options\n } = {}) {\n return this.fetch({ ...options,\n meta: {\n refetchPage\n }\n });\n }\n\n fetchOptimistic(options) {\n const defaultedOptions = this.client.defaultQueryOptions(options);\n const query = this.client.getQueryCache().build(this.client, defaultedOptions);\n query.isFetchingOptimistic = true;\n return query.fetch().then(() => this.createResult(query, defaultedOptions));\n }\n\n fetch(fetchOptions) {\n var _fetchOptions$cancelR;\n\n return this.executeFetch({ ...fetchOptions,\n cancelRefetch: (_fetchOptions$cancelR = fetchOptions.cancelRefetch) != null ? _fetchOptions$cancelR : true\n }).then(() => {\n this.updateResult();\n return this.currentResult;\n });\n }\n\n executeFetch(fetchOptions) {\n // Make sure we reference the latest query as the current one might have been removed\n this.updateQuery(); // Fetch\n\n let promise = this.currentQuery.fetch(this.options, fetchOptions);\n\n if (!(fetchOptions != null && fetchOptions.throwOnError)) {\n promise = promise.catch(noop);\n }\n\n return promise;\n }\n\n updateStaleTimeout() {\n this.clearStaleTimeout();\n\n if (isServer || this.currentResult.isStale || !isValidTimeout(this.options.staleTime)) {\n return;\n }\n\n const time = timeUntilStale(this.currentResult.dataUpdatedAt, this.options.staleTime); // The timeout is sometimes triggered 1 ms before the stale time expiration.\n // To mitigate this issue we always add 1 ms to the timeout.\n\n const timeout = time + 1;\n this.staleTimeoutId = setTimeout(() => {\n if (!this.currentResult.isStale) {\n this.updateResult();\n }\n }, timeout);\n }\n\n computeRefetchInterval() {\n var _this$options$refetch;\n\n return typeof this.options.refetchInterval === 'function' ? this.options.refetchInterval(this.currentResult.data, this.currentQuery) : (_this$options$refetch = this.options.refetchInterval) != null ? _this$options$refetch : false;\n }\n\n updateRefetchInterval(nextInterval) {\n this.clearRefetchInterval();\n this.currentRefetchInterval = nextInterval;\n\n if (isServer || this.options.enabled === false || !isValidTimeout(this.currentRefetchInterval) || this.currentRefetchInterval === 0) {\n return;\n }\n\n this.refetchIntervalId = setInterval(() => {\n if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {\n this.executeFetch();\n }\n }, this.currentRefetchInterval);\n }\n\n updateTimers() {\n this.updateStaleTimeout();\n this.updateRefetchInterval(this.computeRefetchInterval());\n }\n\n clearStaleTimeout() {\n if (this.staleTimeoutId) {\n clearTimeout(this.staleTimeoutId);\n this.staleTimeoutId = undefined;\n }\n }\n\n clearRefetchInterval() {\n if (this.refetchIntervalId) {\n clearInterval(this.refetchIntervalId);\n this.refetchIntervalId = undefined;\n }\n }\n\n createResult(query, options) {\n const prevQuery = this.currentQuery;\n const prevOptions = this.options;\n const prevResult = this.currentResult;\n const prevResultState = this.currentResultState;\n const prevResultOptions = this.currentResultOptions;\n const queryChange = query !== prevQuery;\n const queryInitialState = queryChange ? query.state : this.currentQueryInitialState;\n const prevQueryResult = queryChange ? this.currentResult : this.previousQueryResult;\n const {\n state\n } = query;\n let {\n dataUpdatedAt,\n error,\n errorUpdatedAt,\n fetchStatus,\n status\n } = state;\n let isPreviousData = false;\n let isPlaceholderData = false;\n let data; // Optimistically set result in fetching state if needed\n\n if (options._optimisticResults) {\n const mounted = this.hasListeners();\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n\n if (fetchOnMount || fetchOptionally) {\n fetchStatus = canFetch(query.options.networkMode) ? 'fetching' : 'paused';\n\n if (!dataUpdatedAt) {\n status = 'loading';\n }\n }\n\n if (options._optimisticResults === 'isRestoring') {\n fetchStatus = 'idle';\n }\n } // Keep previous data if needed\n\n\n if (options.keepPreviousData && !state.dataUpdatedAt && prevQueryResult != null && prevQueryResult.isSuccess && status !== 'error') {\n data = prevQueryResult.data;\n dataUpdatedAt = prevQueryResult.dataUpdatedAt;\n status = prevQueryResult.status;\n isPreviousData = true;\n } // Select data if needed\n else if (options.select && typeof state.data !== 'undefined') {\n // Memoize select result\n if (prevResult && state.data === (prevResultState == null ? void 0 : prevResultState.data) && options.select === this.selectFn) {\n data = this.selectResult;\n } else {\n try {\n this.selectFn = options.select;\n data = options.select(state.data);\n data = replaceData(prevResult == null ? void 0 : prevResult.data, data, options);\n this.selectResult = data;\n this.selectError = null;\n } catch (selectError) {\n if (process.env.NODE_ENV !== 'production') {\n this.client.getLogger().error(selectError);\n }\n\n this.selectError = selectError;\n }\n }\n } // Use query data\n else {\n data = state.data;\n } // Show placeholder data if needed\n\n\n if (typeof options.placeholderData !== 'undefined' && typeof data === 'undefined' && status === 'loading') {\n let placeholderData; // Memoize placeholder data\n\n if (prevResult != null && prevResult.isPlaceholderData && options.placeholderData === (prevResultOptions == null ? void 0 : prevResultOptions.placeholderData)) {\n placeholderData = prevResult.data;\n } else {\n placeholderData = typeof options.placeholderData === 'function' ? options.placeholderData() : options.placeholderData;\n\n if (options.select && typeof placeholderData !== 'undefined') {\n try {\n placeholderData = options.select(placeholderData);\n this.selectError = null;\n } catch (selectError) {\n if (process.env.NODE_ENV !== 'production') {\n this.client.getLogger().error(selectError);\n }\n\n this.selectError = selectError;\n }\n }\n }\n\n if (typeof placeholderData !== 'undefined') {\n status = 'success';\n data = replaceData(prevResult == null ? void 0 : prevResult.data, placeholderData, options);\n isPlaceholderData = true;\n }\n }\n\n if (this.selectError) {\n error = this.selectError;\n data = this.selectResult;\n errorUpdatedAt = Date.now();\n status = 'error';\n }\n\n const isFetching = fetchStatus === 'fetching';\n const isLoading = status === 'loading';\n const isError = status === 'error';\n const result = {\n status,\n fetchStatus,\n isLoading,\n isSuccess: status === 'success',\n isError,\n isInitialLoading: isLoading && isFetching,\n data,\n dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: state.fetchFailureCount,\n failureReason: state.fetchFailureReason,\n errorUpdateCount: state.errorUpdateCount,\n isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,\n isFetchedAfterMount: state.dataUpdateCount > queryInitialState.dataUpdateCount || state.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isLoading,\n isLoadingError: isError && state.dataUpdatedAt === 0,\n isPaused: fetchStatus === 'paused',\n isPlaceholderData,\n isPreviousData,\n isRefetchError: isError && state.dataUpdatedAt !== 0,\n isStale: isStale(query, options),\n refetch: this.refetch,\n remove: this.remove\n };\n return result;\n }\n\n updateResult(notifyOptions) {\n const prevResult = this.currentResult;\n const nextResult = this.createResult(this.currentQuery, this.options);\n this.currentResultState = this.currentQuery.state;\n this.currentResultOptions = this.options; // Only notify and update result if something has changed\n\n if (shallowEqualObjects(nextResult, prevResult)) {\n return;\n }\n\n this.currentResult = nextResult; // Determine which callbacks to trigger\n\n const defaultNotifyOptions = {\n cache: true\n };\n\n const shouldNotifyListeners = () => {\n if (!prevResult) {\n return true;\n }\n\n const {\n notifyOnChangeProps\n } = this.options;\n const notifyOnChangePropsValue = typeof notifyOnChangeProps === 'function' ? notifyOnChangeProps() : notifyOnChangeProps;\n\n if (notifyOnChangePropsValue === 'all' || !notifyOnChangePropsValue && !this.trackedProps.size) {\n return true;\n }\n\n const includedProps = new Set(notifyOnChangePropsValue != null ? notifyOnChangePropsValue : this.trackedProps);\n\n if (this.options.useErrorBoundary) {\n includedProps.add('error');\n }\n\n return Object.keys(this.currentResult).some(key => {\n const typedKey = key;\n const changed = this.currentResult[typedKey] !== prevResult[typedKey];\n return changed && includedProps.has(typedKey);\n });\n };\n\n if ((notifyOptions == null ? void 0 : notifyOptions.listeners) !== false && shouldNotifyListeners()) {\n defaultNotifyOptions.listeners = true;\n }\n\n this.notify({ ...defaultNotifyOptions,\n ...notifyOptions\n });\n }\n\n updateQuery() {\n const query = this.client.getQueryCache().build(this.client, this.options);\n\n if (query === this.currentQuery) {\n return;\n }\n\n const prevQuery = this.currentQuery;\n this.currentQuery = query;\n this.currentQueryInitialState = query.state;\n this.previousQueryResult = this.currentResult;\n\n if (this.hasListeners()) {\n prevQuery == null ? void 0 : prevQuery.removeObserver(this);\n query.addObserver(this);\n }\n }\n\n onQueryUpdate(action) {\n const notifyOptions = {};\n\n if (action.type === 'success') {\n notifyOptions.onSuccess = !action.manual;\n } else if (action.type === 'error' && !isCancelledError(action.error)) {\n notifyOptions.onError = true;\n }\n\n this.updateResult(notifyOptions);\n\n if (this.hasListeners()) {\n this.updateTimers();\n }\n }\n\n notify(notifyOptions) {\n notifyManager.batch(() => {\n // First trigger the configuration callbacks\n if (notifyOptions.onSuccess) {\n var _this$options$onSucce, _this$options, _this$options$onSettl, _this$options2;\n\n (_this$options$onSucce = (_this$options = this.options).onSuccess) == null ? void 0 : _this$options$onSucce.call(_this$options, this.currentResult.data);\n (_this$options$onSettl = (_this$options2 = this.options).onSettled) == null ? void 0 : _this$options$onSettl.call(_this$options2, this.currentResult.data, null);\n } else if (notifyOptions.onError) {\n var _this$options$onError, _this$options3, _this$options$onSettl2, _this$options4;\n\n (_this$options$onError = (_this$options3 = this.options).onError) == null ? void 0 : _this$options$onError.call(_this$options3, this.currentResult.error);\n (_this$options$onSettl2 = (_this$options4 = this.options).onSettled) == null ? void 0 : _this$options$onSettl2.call(_this$options4, undefined, this.currentResult.error);\n } // Then trigger the listeners\n\n\n if (notifyOptions.listeners) {\n this.listeners.forEach(({\n listener\n }) => {\n listener(this.currentResult);\n });\n } // Then the cache listeners\n\n\n if (notifyOptions.cache) {\n this.client.getQueryCache().notify({\n query: this.currentQuery,\n type: 'observerResultsUpdated'\n });\n }\n });\n }\n\n}\n\nfunction shouldLoadOnMount(query, options) {\n return options.enabled !== false && !query.state.dataUpdatedAt && !(query.state.status === 'error' && options.retryOnMount === false);\n}\n\nfunction shouldFetchOnMount(query, options) {\n return shouldLoadOnMount(query, options) || query.state.dataUpdatedAt > 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\n\nfunction shouldFetchOn(query, options, field) {\n if (options.enabled !== false) {\n const value = typeof field === 'function' ? field(query) : field;\n return value === 'always' || value !== false && isStale(query, options);\n }\n\n return false;\n}\n\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n return options.enabled !== false && (query !== prevQuery || prevOptions.enabled === false) && (!options.suspense || query.state.status !== 'error') && isStale(query, options);\n}\n\nfunction isStale(query, options) {\n return query.isStaleByTime(options.staleTime);\n} // this function would decide if we will update the observer's 'current'\n// properties after an optimistic reading via getOptimisticResult\n\n\nfunction shouldAssignObserverCurrentProperties(observer, optimisticResult, options) {\n // it is important to keep this condition like this for three reasons:\n // 1. It will get removed in the v5\n // 2. it reads: don't update the properties if we want to keep the previous\n // data.\n // 3. The opposite condition (!options.keepPreviousData) would fallthrough\n // and will result in a bad decision\n if (options.keepPreviousData) {\n return false;\n } // this means we want to put some placeholder data when pending and queryKey\n // changed.\n\n\n if (options.placeholderData !== undefined) {\n // re-assign properties only if current data is placeholder data\n // which means that data did not arrive yet, so, if there is some cached data\n // we need to \"prepare\" to receive it\n return optimisticResult.isPlaceholderData;\n } // if the newly created result isn't what the observer is holding as current,\n // then we'll need to update the properties as well\n\n\n if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n return true;\n } // basically, just keep previous properties if nothing changed\n\n\n return false;\n}\n\nexport { QueryObserver };\n//# sourceMappingURL=queryObserver.mjs.map\n","'use client';\nimport * as React from 'react';\n\nfunction createValue() {\n let isReset = false;\n return {\n clearReset: () => {\n isReset = false;\n },\n reset: () => {\n isReset = true;\n },\n isReset: () => {\n return isReset;\n }\n };\n}\n\nconst QueryErrorResetBoundaryContext = /*#__PURE__*/React.createContext(createValue()); // HOOK\n\nconst useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext); // COMPONENT\n\nconst QueryErrorResetBoundary = ({\n children\n}) => {\n const [value] = React.useState(() => createValue());\n return /*#__PURE__*/React.createElement(QueryErrorResetBoundaryContext.Provider, {\n value: value\n }, typeof children === 'function' ? children(value) : children);\n};\n\nexport { QueryErrorResetBoundary, useQueryErrorResetBoundary };\n//# sourceMappingURL=QueryErrorResetBoundary.mjs.map\n","'use client';\nimport * as React from 'react';\n\nconst IsRestoringContext = /*#__PURE__*/React.createContext(false);\nconst useIsRestoring = () => React.useContext(IsRestoringContext);\nconst IsRestoringProvider = IsRestoringContext.Provider;\n\nexport { IsRestoringProvider, useIsRestoring };\n//# sourceMappingURL=isRestoring.mjs.map\n","'use client';\nimport * as React from 'react';\nimport { shouldThrowError } from './utils.mjs';\n\nconst ensurePreventErrorBoundaryRetry = (options, errorResetBoundary) => {\n if (options.suspense || options.useErrorBoundary) {\n // Prevent retrying failed query if the error boundary has not been reset yet\n if (!errorResetBoundary.isReset()) {\n options.retryOnMount = false;\n }\n }\n};\nconst useClearResetErrorBoundary = errorResetBoundary => {\n React.useEffect(() => {\n errorResetBoundary.clearReset();\n }, [errorResetBoundary]);\n};\nconst getHasError = ({\n result,\n errorResetBoundary,\n useErrorBoundary,\n query\n}) => {\n return result.isError && !errorResetBoundary.isReset() && !result.isFetching && shouldThrowError(useErrorBoundary, [result.error, query]);\n};\n\nexport { ensurePreventErrorBoundaryRetry, getHasError, useClearResetErrorBoundary };\n//# sourceMappingURL=errorBoundaryUtils.mjs.map\n","const ensureStaleTime = defaultedOptions => {\n if (defaultedOptions.suspense) {\n // Always set stale time when using suspense to prevent\n // fetching again when directly mounting after suspending\n if (typeof defaultedOptions.staleTime !== 'number') {\n defaultedOptions.staleTime = 1000;\n }\n }\n};\nconst willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;\nconst shouldSuspend = (defaultedOptions, result, isRestoring) => (defaultedOptions == null ? void 0 : defaultedOptions.suspense) && willFetch(result, isRestoring);\nconst fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).then(({\n data\n}) => {\n defaultedOptions.onSuccess == null ? void 0 : defaultedOptions.onSuccess(data);\n defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(data, null);\n}).catch(error => {\n errorResetBoundary.clearReset();\n defaultedOptions.onError == null ? void 0 : defaultedOptions.onError(error);\n defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(undefined, error);\n});\n\nexport { ensureStaleTime, fetchOptimistic, shouldSuspend, willFetch };\n//# sourceMappingURL=suspense.mjs.map\n","'use client';\nimport { parseQueryArgs, QueryObserver } from '@tanstack/query-core';\nimport { useBaseQuery } from './useBaseQuery.mjs';\n\nfunction useQuery(arg1, arg2, arg3) {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n return useBaseQuery(parsedOptions, QueryObserver);\n}\n\nexport { useQuery };\n//# sourceMappingURL=useQuery.mjs.map\n","'use client';\nimport * as React from 'react';\nimport { notifyManager } from '@tanstack/query-core';\nimport { useSyncExternalStore } from './useSyncExternalStore.mjs';\nimport { useQueryErrorResetBoundary } from './QueryErrorResetBoundary.mjs';\nimport { useQueryClient } from './QueryClientProvider.mjs';\nimport { useIsRestoring } from './isRestoring.mjs';\nimport { ensurePreventErrorBoundaryRetry, useClearResetErrorBoundary, getHasError } from './errorBoundaryUtils.mjs';\nimport { ensureStaleTime, shouldSuspend, fetchOptimistic } from './suspense.mjs';\n\nfunction useBaseQuery(options, Observer) {\n const queryClient = useQueryClient({\n context: options.context\n });\n const isRestoring = useIsRestoring();\n const errorResetBoundary = useQueryErrorResetBoundary();\n const defaultedOptions = queryClient.defaultQueryOptions(options); // Make sure results are optimistically set in fetching state before subscribing or updating options\n\n defaultedOptions._optimisticResults = isRestoring ? 'isRestoring' : 'optimistic'; // Include callbacks in batch renders\n\n if (defaultedOptions.onError) {\n defaultedOptions.onError = notifyManager.batchCalls(defaultedOptions.onError);\n }\n\n if (defaultedOptions.onSuccess) {\n defaultedOptions.onSuccess = notifyManager.batchCalls(defaultedOptions.onSuccess);\n }\n\n if (defaultedOptions.onSettled) {\n defaultedOptions.onSettled = notifyManager.batchCalls(defaultedOptions.onSettled);\n }\n\n ensureStaleTime(defaultedOptions);\n ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary);\n useClearResetErrorBoundary(errorResetBoundary);\n const [observer] = React.useState(() => new Observer(queryClient, defaultedOptions));\n const result = observer.getOptimisticResult(defaultedOptions);\n useSyncExternalStore(React.useCallback(onStoreChange => {\n const unsubscribe = isRestoring ? () => undefined : observer.subscribe(notifyManager.batchCalls(onStoreChange)); // Update result to make sure we did not miss any query updates\n // between creating the observer and subscribing to it.\n\n observer.updateResult();\n return unsubscribe;\n }, [observer, isRestoring]), () => observer.getCurrentResult(), () => observer.getCurrentResult());\n React.useEffect(() => {\n // Do not notify on updates because of changes in the options because\n // these changes should already be reflected in the optimistic result.\n observer.setOptions(defaultedOptions, {\n listeners: false\n });\n }, [defaultedOptions, observer]); // Handle suspense\n\n if (shouldSuspend(defaultedOptions, result, isRestoring)) {\n throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n } // Handle error boundary\n\n\n if (getHasError({\n result,\n errorResetBoundary,\n useErrorBoundary: defaultedOptions.useErrorBoundary,\n query: observer.getCurrentQuery()\n })) {\n throw result.error;\n } // Handle result property usage tracking\n\n\n return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\n\nexport { useBaseQuery };\n//# sourceMappingURL=useBaseQuery.mjs.map\n","'use client';\nimport { useSyncExternalStore as useSyncExternalStore$1 } from 'use-sync-external-store/shim/index.js';\n\nconst useSyncExternalStore = useSyncExternalStore$1;\n\nexport { useSyncExternalStore };\n//# sourceMappingURL=useSyncExternalStore.mjs.map\n","function shouldThrowError(_useErrorBoundary, params) {\n // Allow useErrorBoundary function to override throwing behavior on a per-error basis\n if (typeof _useErrorBoundary === 'function') {\n return _useErrorBoundary(...params);\n }\n\n return !!_useErrorBoundary;\n}\n\nexport { shouldThrowError };\n//# sourceMappingURL=utils.mjs.map\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default basePropertyOf;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n","import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n","import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nexport default baseMap;\n","import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nexport default map;\n"],"names":["extendStatics","__extends","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","ErrorBoundary","_super","_this","state","error","undefined","getDerivedStateFromError","componentDidCatch","_a","props","appsignal","instance","action","_b","tags","override","span","createSpan","setError","setTags","framework","setAction","send","setState","render","fallback","children","defaultProps","LegacyBoundary","unstable_handleError","name","message","stack","factory","window","modules","installedModules","moduleId","exports","module","l","m","c","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","mode","__esModule","ns","key","bind","object","property","__rest","__decorate","__param","__metadata","__awaiter","__generator","__createBinding","__exportStar","__values","__read","__spread","__spreadArrays","__spreadArray","__await","__asyncGenerator","__asyncDelegator","__asyncValues","__makeTemplateObject","__importStar","__importDefault","__classPrivateFieldGet","__classPrivateFieldSet","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","decorators","target","desc","getOwnPropertyDescriptor","Reflect","decorate","paramIndex","decorator","metadataKey","metadataValue","metadata","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","body","f","y","g","_","label","sent","trys","ops","verb","iterator","v","op","pop","push","k","k2","ar","concat","il","a","j","jl","to","from","pack","slice","asyncIterator","q","resume","fulfill","settle","shift","cooked","raw","__setModuleDefault","mod","default","receiver","kind","has","set","global","allToUpperCase","allToLowerCase","encodeBody","decodeBody","Format","promisify","trim","arrChooseN","randomHexString","randomString","cheapRandStr","dataSizeBytes","inspectBody","inspectError","isErrorInfoOrPartialErrorInfo","now","parseQueryString","toQueryString","arrPopRandomElement","defaultPostHeaders","defaultGetHeaders","allSame","arrEvery","arrFilter","arrMap","safeArrForEach","arrForEach","forInOwnNonNullProperties","valuesArray","keysArray","arrWithoutValue","arrDeleteValue","arrIn","arrIndexOf","arrSubtract","arrIntersectOb","arrIntersect","intersect","containsValue","inherits","prototypicalClone","shallowClone","isEmptyArg","isOnlyPropIn","isEmpty","isObject","ensureArray","isArray","copy","mixin","arrEquals","toBase64","matchDerivedChannel","shallowEquals","getGlobalObject","getRetryTime","getJitterCoefficient","getBackoffCoefficient","tslib_1","platform_1","defaults_1","errorinfo_1","enc_base64_1","enc_utf8_1","randomPosn","arrOrStr","Math","floor","random","args","_i","source","arg","ob","ownProperties","F","arr1","arr2","member","arr","val","idx","res","splice","src","toString","obj","prop","ctor","superCtor","Config","super_","element","elem","fromIndex","len","newArr","ownOnly","fn","forEach","map","filter","every","first","item","contentTypes","json","jsonp","xml","html","msgpack","count","min","options","format","accept","protocolVersion","getAgentString","contentType","params","parts","encodeURIComponent","join","query","match","search","exec","decodeURIComponent","Date","getTime","err","Error","inspect","BufferUtils","isBuffer","data","byteLength","stringByteSize","substr","numBytes","getRandomValues","Uint8Array","uIntArr","base64Encode","charset","base64CharSet","round","hexEncode","hexCharSet","numItems","mutableArr","str","replace","fnName","decode","JSON","parse","encode","stringify","toLowerCase","toUpperCase","initialTimeout","retryAttempt","self","keys","qualifierParam","channelName","createHmac","Buffer","LogLevels","globalObject","pad","timeSegment","three","padStart","getHandler","logger","logTimestamps","msg","time","getHours","getMinutes","getSeconds","getMilliseconds","Logger","logLevel","LOG_DEFAULT","initLogHandlers","consoleLogger","errorLogger","Window","WorkerGlobalScope","console","log","warn","Function","getDefaultLoggers","logHandler","logErrorHandler","renamedClientOption","oldName","newName","deprecationWarning","renamedMethod","className","shouldLog","LOG_NONE","None","LOG_ERROR","LOG_MAJOR","Major","LOG_MINOR","Minor","LOG_MICRO","Micro","LOG_DEBUG","logAction","level","deprecated","description","setLog","handler","__webpack_require__","Platform","PartialErrorInfo","Utils","statusCode","code","cause","href","ErrorInfo","fromValues","values","CryptoJS","ArrayBuffer","WordArray","lib","superInit","init","subInit","typedArray","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","buffer","byteOffset","typedArrayByteLength","words","crypto","msCrypto","cryptoSecureRandomInt","randomBytes","readInt32LE","subtype","C","C_lib","Base","extend","overrides","mixIn","$super","properties","propertyName","clone","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","ceil","nBytes","C_enc","enc","hexChars","bite","hexStr","hexStrLength","parseInt","Latin1","latin1Chars","fromCharCode","latin1Str","latin1StrLength","charCodeAt","Utf8","escape","utf8Str","unescape","BufferedBlockAlgorithm","reset","_data","_nDataBytes","_append","_process","doFlush","processedWords","dataWords","dataSigBytes","blockSize","nBlocksReady","nWordsReady","max","_minBufferSize","nBytesReady","offset","_doProcessBlock","C_algo","Hasher","cfg","_doReset","update","messageUpdate","finalize","_doFinalize","_createHelper","hasher","_createHmacHelper","HMAC","algo","logger_1","callListener","eventThis","listener","removeListener","targetListeners","eventFilter","listeners","index","eventName","targetListenersIndex","EventEmitter","any","events","anyOnce","eventsOnce","on","event_1","listener_1","off","firstArg","secondArg","event","emit","eventsOnceListeners","eventsListeners","once","argCount","event_2","self_1","listenerWrapper_1","innerArgs","whenState","targetState","currentState","listenerArgs","getDefaults","normaliseOptions","objectifyOptions","getHosts","getFallbackHosts","environmentFallbackHosts","getHttpScheme","getPort","getHost","package_json_1","agent","version","Defaults","ENVIRONMENT","REST_HOST","REALTIME_HOST","FALLBACK_HOSTS","PORT","TLS_PORT","TIMEOUTS","disconnectedRetryTimeout","suspendedRetryTimeout","httpRequestTimeout","channelRetryTimeout","fallbackRetryTimeout","connectionStateTtl","realtimeRequestTimeout","recvTimeout","preferenceConnectTimeout","parallelUpgradeDelay","httpMaxRetryCount","maxMessageSize","checkHost","host","ws","restHost","realtimeHost","tls","tlsPort","port","environment","fallbackHosts","token","wsHost","queueEvents","queueMessages","headers","fallbackHostsUseDefault","recover","lastConnectionDetails","cb","closeOnUnload","transports","production","getRealtimeHost","timeouts","getTimeouts","useBinaryProtocol","supportsBinary","preferBinary","clientId","utf8Encode","idempotentRestPublishing","promises","connectivityCheckParams","connectivityCheckUrl","split","uri","qs","agentStr","agents","platformDefaults","getMessageSize","size","extras","Message","toJSON","encoding","toBuffer","id","connectionId","connectionKey","timestamp","encrypt","callback","cipher","channelCipher","algorithm","encodeArray","messages","processed","inputContext","context","channelOptions","plugins","baseEncodedPreviousPayload","normaliseContext","lastPayload","xforms","lastProcessedEncodingIndex","encodingsToProcess","xform","base64Decode","utf8Decode","xformAlgorithm","decrypt","vcdiff","deltaBase","typedArrayToBuffer","fromResponseBody","fromValuesArray","fromEncoded","encoded","inputOptions","Crypto","getCipher","cipherParams","normalizeCipherOptions","fromEncodedArray","encodedArray","getMessagesSize","total","serialize","message_1","presencemessage_1","actions","HEARTBEAT","ACK","NACK","CONNECT","CONNECTED","DISCONNECT","DISCONNECTED","CLOSE","CLOSED","ERROR","ATTACH","ATTACHED","DETACH","DETACHED","PRESENCE","MESSAGE","SYNC","AUTH","ACTIVATE","ActionName","flags","HAS_PRESENCE","HAS_BACKLOG","RESUMED","TRANSIENT","ATTACH_RESUME","PUBLISH","SUBSCRIBE","PRESENCE_SUBSCRIBE","flagNames","toStringArray","array","MODE_ALL","simpleAttributes","ProtocolMessage","hasFlag","flag","setFlag","getMode","encodeModesToFlags","modes","decodeModesFromFlags","channelModes","Action","deserialize","serialized","deserialized","fromDeserialized","presence","attribute","attribIndex","auth","accessToken","stringifiedParams_1","parseLoop","base64Str","base64StrLength","reverseMap","bitsCombined","Base64","base64Chars","triplet","charAt","paddingChar","_reverseMap","paddingIndex","protocolmessage_1","transport_1","connectionerrors_1","auth_1","XHRStates_1","protocolMessageFromRawError","isTokenErr","shouldBeErrorAction","CometTransport","connectionManager","onAuthUpdated","tokenDetails","authParams","access_token","stream","sendRequest","recvRequest","pendingCallback","pendingItems","connect","cometScheme","baseUri","connectUri","getAuthParams","disconnect","isDisposed","connectParams","getConnectParams","preconnected","connectRequest","createRequest","REQ_RECV_STREAM","REQ_RECV","onData","onActivity","nextTick","recv","requestClose","_requestCloseOrDisconnect","requestDisconnect","closing","closeOrDisconnectUri","closeUri","disconnectUri","request","REQ_SEND","finish","dispose","abort","disconnected","onConnect","connectionStr","connectionDetails","baseConnectionUri","sendUri","recvUri","sendItems","sendAnyPending","items","encodeRequest","isConnected","REQ_RECV_POLL","responseData","decodeResponse","onProtocolMessage","requestItems","HttpStatusCodes","isSuccessCode","Success","BadRequest","HttpMethods_1","HttpStatusCodes_1","withAuthDetails","rest","errCallback","opCallback","http","supportsAuthHeaders","getAuthHeaders","authHeaders","paramString","paramPairs","needle","urlFromPathAndParams","path","Resource","envelope","do","Get","delete","Delete","post","Post","patch","Patch","put","Put","method","unpacked","logResponseHandler","outerHeaders","outerStatusCode","NoContent","wrappedStatusCode","response","wrappedHeaders","wrappedErr","unenvelope","doRequest","decodedBody","decodeErr","resHeaders","authorize","toActionValue","actionString","PresenceMessage","Actions","isSynthesized","substring","parseId","msgSerial","stringifyAction","fromData","eventemitter_1","getAblyError","responseBody","isAblyError","noop","idCounter","pendingRequests","isIE","XDomainRequest","needJsonEnvelope","navigator","userAgent","Number","XHRRequest","requestMode","rnd","timedOut","requestComplete","_timeouts","complete","timeout","timer","setTimeout","xhr","XMLHttpRequest","responseType","h","open","withCredentials","setRequestHeader","streaming","successResponse","errorHandler","errorEvent","errorMessage","type","statusText","onerror","onabort","ontimeout","streamPos","onEnd","parsedResponse","header","getResponseHeader","getHeader","jsonResponseBody","responseText","headerPairs","getAllResponseHeaders","getHeadersAsObject","onProgress","chunk","bodyEnd","onChunk","onreadystatechange","readyState","status","clearTimeout","isEncodingChunked","streamComplete","multicaster_1","hmac_sha256_1","resource_1","MAX_TOKEN_LENGTH","pow","normaliseAuthcallbackError","hmac","text","inst","digest","c14n","capability","c14nCapability","sort","logAndValidateTokenAuthMethod","authOptions","authCallback","authUrl","useTokenAuth","basicAuthForced","trId","Auth","client","tokenParams","defaultTokenParams","currentTokenRequestId","waitingForTokenRequest","noWayToRenew","_saveTokenOptions","_saveBasicOptions","_authOptions","_forceNewToken","connection","Forbidden","actOnErrorFromAuthorize","authorise","_ensureValidAuthCredentials","queryTime","requestToken","tokenRequestCallback","_callback","providedQsParams","usePost","authMethod","queryIdx","authUrlRequestCallback","doUri","createTokenRequest","tokenRequestCallbackTimeoutExpired","timeoutLength","tokenRequestCallbackTimeout","tokenRequestOrDetails","objectSize","suppressMaxLengthCheck","signedTokenParams","tokenCb","requestHeaders","tokenResponse","keyName","keyParts","keySecret","authoriseCb","ttl","nonce","signText","mac","getTimestamp","authorization","basicKey","isTimeOffsetSet","getTimestampUsingOffset","serverTimeOffset","_userSetClientId","forceSupersede","_tokenClientIdMismatch","expires","tokenRequestId","callbacks","_uncheckedSetClientId","tokenClientId","revokeTokens","specifiers","optionsOrCallbackArg","callbackArg","resolvedOptions","requestBodyDTO","targets","specifier","requestBody","newBatchResponse","batchResult","HttpMethods","HttpPaginatedResponse","PaginatedResult","PaginatedResource","bodyHandler","useHttpPaginatedResponse","handlePage","useHPR","returnErrOnly","linkHeader","relParams","urlMatch","linkMatch","parseRelLinks","resource","current","hasNext","isLast","success","errorCode","isRetriable","ConnectionErrorCodes","SUSPENDED","FAILED","CLOSING","UNKNOWN_CONNECTION_ERR","UNKNOWN_CHANNEL_ERR","ConnectionErrors","suspended","failed","closed","unknownConnectionErr","unknownChannelErr","includes","XHRStates","Multicaster","members","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","closeMessage","disconnectMessage","Transport","forceJsonProtocol","heartbeats","registerProposedTransport","isFinished","maxIdleInterval","idleTimer","lastActivity","close","fail","shortName","onClose","onDisconnect","onChannelMessage","channel","onFatalError","maxPromisedIdle","ping","setIdleTimer","onIdleTimerExpire","sinceLast","timeRemaining","tryConnect","transportCtor","transportParams","transportAttemptTimer","transport","errorCb","MD5","EvpKDF","keySize","iterations","compute","password","salt","block","derivedKey","derivedKeyWords","Cipher","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","_key","process","dataUpdate","ivSize","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","ciphertext","C_mode","StreamCipher","BlockCipherMode","iv","Encryptor","Decryptor","_cipher","_iv","CBC","xorBlock","_prevBlock","processBlock","encryptBlock","thisBlock","decryptBlock","Pkcs7","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","padding","unpad","CipherParams","BlockCipher","modeCreator","_mode","__creator","finalProcessedBlocks","formatter","OpenSSLFormatter","OpenSSL","openSSLStr","ciphertextWords","encryptor","cipherCfg","_parse","OpenSSLKdf","kdf","execute","derivedParams","Request","comettransport_1","_ablyjs_jsonp","JSONPTransport","isAvailable","jsonpSupported","allowComet","script","document","createElement","async","head","getElementsByTagName","insertBefore","firstChild","parentNode","removeChild","supportedTransports","push_1","paginatedresource_1","channel_1","stats_1","Rest","optionsObj","normalOptions","keyMatch","authority","_currentFallback","Http","channels","Channels","stats","supportsLinkHeaders","statsValues","customHeaders","useBinary","decoder","_method","paginatedResource","resbody","methods","methodsWithBody","batchPublish","specOrSpecs","singleSpecMode","batchResults","batchPresence","channelsParam","logOptions","Callbacks","all","setOptions","release","H","K","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","W","SHA256","_hash","M","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","t1","nBitsTotal","nBitsLeft","HmacSHA256","presence_1","normaliseChannelOptions","Channel","basePath","history","_history","publish","second","allEmptyIds","msgIdBase_1","_publish","Presence","TransportParams","protocol_1","messagequeue_1","connectionstatechange_1","websockettransport_1","haveWebStorage","WebStorage","localSupported","haveSessionStorage","sessionSupported","transportPreferenceName","sessionRecoveryName","decodeRecoveryKey","recoveryKey","upgrade","recoveryContext","echoMessages","echo","ConnectionManager","realtime","disconnectedRetryCount","initTransports","connectingTimeout","states","initialized","terminal","sendEvents","failState","connecting","retryDelay","connected","synchronizing","forceQueueEvents","errorReason","queuedMessages","defaultTransports","baseTransport","baseTransportOrder","upgradeTransports","transportPreference","httpHosts","activeProtocol","proposedTransports","pendingTransports","lastAutoReconnectAttempt","forceFallbackHost","connectCounter","addEventListener","persistConnection","requestState","disconnectAllTransports","startConnect","Transports","initFn","createTransportParams","getTransportParams","modeCb","recoverFn","lastSessionData","getSession","shouldRecover","decideMode","tryATransport","candidate","notifyState","setTransportPending","optimalTransport","transportPreferenceOrder","getUpgradePossibilities","scheduleTransportActivation","activateTransport","connectImpl","unpersistConnection","deactivateTransport","currentTransport","getTransport","abandon","oldProtocol","finishUpgrade","sendQueuedMessages","onceIdle","persistTransportPreference","existingState","connectedState","existingActiveProtocol","setConnection","onConnectionDetailsUpdate","connectedErr","_connectionId","messageQueue","pendingTransport","proposedTransport","currentProtocol","wasActive","wasPending","wasProposed","noTransportsScheduledForActivation","queuePendingMessages","getPendingMessages","clearPendingMessages","unpersistTransportPreference","retryImmediately","newConnectionState","startSuspendTimer","startTransitionTimer","hasConnectionError","prevConnId","resetSendAttempted","clearConnection","createRecoveryKey","channelSerials","checkConnectionStateFreshness","disconnectedAt","location","setSession","removeSession","getError","getStateError","activeState","enactStateChange","stateChange","reason","newState","transitionState","transitionTimer","cancelTransitionTimer","suspendTimer","checkSuspendTimer","cancelSuspendTimer","startRetryTimer","interval","retryTimer","cancelRetryTimer","indicated","change","autoReconnect","propogateConnectionInterruption","failQueuedMessages","closeImpl","connectCount","recoverChannels","authCb","upgradeIfNeeded","getTransportPreference","connectPreference","connectBase","preference","preferenceTimeoutExpired","preferenceTimeout","fatal","giveUp","candidateHosts","hostAttemptCb","tryFallbackHosts","checkConnectivity","connectivity","currentSerial","upgradePossibilities","upgradeTransport","upgradeTransportParams","transportParams_1","activeTransport","authMsg","successListener_1","failureListener_1","exceptActive","queueEvent","sendImpl","PendingMessage","queue","pendingMessage","ackRequired","sendAttempted","lastQueued","last","maxSize","dest","proposed","bundleWith","merged","pendingMessages","prepend","numQueued","completeAllMessages","onActiveTransport","onUpgradeTransport","pingStart_1","id_1","onHeartbeat_1","responseId","timer_1","responseTime","completed","onTransportActive","remove","MessageQueue","copyAll","append","unshift","completeMessages","serial","startSerial","endSerial","completeMessages_1","MAX_SAFE_INTEGER","MAX_VALUE","clear","ConnectionStateChange","previous","retryIn","realtimepresence_1","channelstatechange_1","RealtimeChannel","retryCount","untilAttach","attachSerial","from_serial","subscriptions","syncChannelSerial","channelSerial","_requestedFlags","_attachResume","_decodingContext","_lastPayload","messageId","protocolMessageChannelSerial","decodeFailureRecoveryInProgress","_allChannelChanges","invalidStateError","processListenerArgs","previousChannelOptions","currentMode","validateChannelOptions","_shouldReattachToSetOptions","attachImpl","prevOptions","requestedParams","omitAgent","existingParams","__publish","sendMessage","onEvent","attach","_flags","_attach","forceReattach","attachReason","attachMsg","detach","detachImpl","subscribe","_subscribeFilter","filteredListener","_c","_d","_e","_f","mapping","refTimeserial","ref","timeserial","refType","isRef","entries","find","_addFilteredSubscription","realListener","filteredSubscriptions","Map","realListenerMap","_getAndDeleteFilteredSubscriptions","filterMaps","listenerMaps","reduce","prev","cur","listeners_1","unsubscribe","sync","syncMessage","sendPresence","onMessage","setChannelSerial","isSync","modesFromFlags","resumed","hasPresence","hasBacklog","onAttached","updateOnAttached","checkPendingState","detachErr","presenceMsg","setPresence","firstMessage","lastMessage","delta","_startDecodeFailureRecovery","clearStateTimer","actOnChannelState","cmState","startStateTimerIfNotRunning","timeoutPendingState","stateTimer","getReleaseErr","channelParams","ChannelStateChange","SHA1","HmacSHA1","utf8Write","view","string","codePoint","setUint8","utf8Read","end","byte_","getUint8","utf8ByteCount","SH_L_32","SH_R_32","Decoder","bin","buf","ext","getInt8","getUint16","getUint32","getFloat32","getFloat64","getUint64","getInt16","getInt32","getInt64","encodeableKeys","sparse","_encode","length_1","setUint16","setUint32","isView","length_2","setFloat64","setInt32","setUint64","setInt8","setInt16","setInt64","length_3","sizeof","length_4","length_5","length_6","DataView","bytes","rest_1","realtime_1","bufferutils_1","crypto_1","http_1","config_1","webstorage_1","defaults_2","msgpack_1","noUpgrade","Realtime","devicedetails_1","pushchannelsubscription_1","Push","admin","Admin","deviceRegistrations","DeviceRegistrations","channelSubscriptions","ChannelSubscriptions","recipient","payload","pushFullWait","fullWait","save","device","deviceIdOrDetails","deviceId","list","removeWhere","subscription","listChannels","parsedBody","DeviceFormFactor","DevicePlatform","DeviceDetails","deviceSecret","platform","formFactor","deviceIdentityToken","toRequestBody","PushChannelSubscription","MessageCount","uncompressedData","refused","MessageCategory","category","ResourceCount","peak","mean","opened","RequestCount","succeeded","ConnectionTypes","plain","MessageTypes","MessageTraffic","webhook","sharedQueue","externalQueue","httpEvent","MessageDirections","inbound","outbound","XchgMessages","producerPaid","consumerPaid","PushStats","notifications","invalid","attempted","successful","directPublishes","ProcessedCount","skipped","ProcessedMessages","Stats","persisted","connections","apiRequests","tokenRequests","xchgProducer","xchgConsumer","pushStats","inProgress","unit","intervalId","connection_1","realtimechannel_1","connectionmanager_1","autoConnect","serials","name_1","name_2","connectionState","fromChannelStates","toChannelState","channelId","getDerived","deriveOptions","releaseErr","Connection","ably","configurable","Protocol","onAck","onNack","WebSocketTransport","useProtocolHeartbeats","WebSocket","createWebSocket","wsUri","paramStr","param","wsConnection","binaryType","onopen","onWsOpen","onclose","ev","onWsClose","onmessage","onWsData","onWsError","wasClean","isAnonymousOrWildcard","realtimePresence","newerThan","existing","itemOrderings","existingOrderings","RealtimePresence","syncComplete","PresenceMap","_myMembers","pendingPresence","enter","_enterOrUpdateClient","enterClient","updateClient","leave","leaveClient","waitForSync","returnMembers","waitAttached","waitSync","presenceSet","syncCursor","myMembers","broadcastMessages","connId","startSync","endSync","_synthesizeLeaves","_ensureMyMembersPresent","pendingPresCount","presenceArray","multicaster","_clearMyMembers","failPendingPresence","reenterCb","memberKey","entry","_args","syncInProgress","residualMembers","getClient","existingItem","setInProgress","enc_hex_1","lib_typedarrays_1","isWordArray","isArrayBuffer","isTypedArray","uint8ViewToBase64","base64","encodings","byteRemainder","mainLength","base64ToArrayBuffer","binary_string","atob","ascii","arrayBuffer","uint8View","toArrayBuffer","toWordArray","hexDecode","TextEncoder","TextDecoder","bufferCompare","buffer1","buffer2","wordArray1","wordArray2","cmp","words1","words2","crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0__","crypto_js_build_lib_typedarrays__WEBPACK_IMPORTED_MODULE_0___default","crypto_js_build_enc_base64__WEBPACK_IMPORTED_MODULE_1__","crypto_js_build__WEBPACK_IMPORTED_MODULE_2__","crypto_js_build__WEBPACK_IMPORTED_MODULE_2___default","_common_lib_util_logger__WEBPACK_IMPORTED_MODULE_3__","_common_lib_util_logger__WEBPACK_IMPORTED_MODULE_3___default","common_lib_types_errorinfo__WEBPACK_IMPORTED_MODULE_4__","common_lib_types_errorinfo__WEBPACK_IMPORTED_MODULE_4___default","config","bufferUtils","generateRandom","getRandomWordArray","blockRandomArray","nativeArray","pkcs5Padding","keyLength","CBCCipher","blockLengthWords","cjsAlgorithm","getDefaultParams","validateCipherParams","generateRandomKey","plaintext","plaintextLength","paddedLength","getPaddedLength","getIv","cipherOut","encryptCipher","ciphertextBody","decryptCipher","epilogue","randomBlock","swapEndian","word","Utf16","Utf16BE","utf16Chars","utf16Str","utf16StrLength","Utf16LE","input","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","x","xi","sx","x2","x4","x8","RCON","AES","_nRounds","_keyPriorReset","keyWords","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","_doCryptBlock","nRounds","s0","s1","s2","s3","t0","t2","t3","T","abs","sin","offset_i","M_offset_i","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","HH","II","nBitsTotalH","nBitsTotalL","hash","H_i","HmacMD5","xhrrequest_1","jsonptransport_1","fetchrequest_1","shouldFallback","errorInfo","connectionHost","class_1","checksInProgress","_getHosts","connectivityUrlIsDefault","xhrSupported","req","disableConnectivityCheck","upUrl","jsonpInternetUpUrl","fetchSupported","uriFromHost","currentFallback","validUntil","hosts","tryAHost","persistOnSuccess","methodsWithoutBody","utils_1","fetchHeaders","Headers","controller","AbortController","requestInit","isWebworker","credentials","fetch","URLSearchParams","ok","catch","loc","currentUrl","origin","streamingSupported","setImmediate","test","Webstorage","sessionStorage","setItem","removeItem","localStorage","_get","_remove","_set","session","wrappedValue","storageInterface","rawItem","getItem","TransportNames_1","XhrPolling","XhrStreaming","JsonP","TransportNames","jsonptransport","jsonptransport_default","utils","platform_default","comettransport","comettransport_default","xhrrequest","xhrrequest_default","xhrpollingtransport","XHRPollingTransport","xhrstreamingtransport","XHRStreamingTransport","_typeof","_defineProperty","writable","_objectSpread","ownKeys","sym","_toConsumableArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","UPPERCASE_RE","UPPERCASE_RE_TO_KEBAB","isUnitlessNumber","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridColumn","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","prefixes","prefix","prefixKey","stringifyValue","stringifyAndImportantifyValue","importantify","hashString","MAP_EXISTS","OrderedElements","elements","keyOrder","_proto","shouldReorder","nested","_nested","addStyleType","styleType","unwrapExports","createCommonjsModule","capitalizeString_1","prefixProperty_1","prefixProperties","style","newStyle","requiredPrefixes","capitalizedProperty","_capitalizeString2","styleProperty","prefixValue_1","metaData","processedValue","addNewValuesOnly_1","addIfNew","isObject_1","createPrefixer","_ref","prefixMap","_isObject2","combinedValue","_prefixValue2","_addNewValuesOnly2","_processedValue","_prefixProperty2","_interopRequireDefault","backgroundClip","isPrefixedValue_1","regex","calc_1","_isPrefixedValue2","calc","crossFade_1","crossFade","cursor_1","grab","grabbing","cursor","filter_1","flexboxIE_1","alternativeProps","alternativeValues","flexShorthandMappings","msFlex","flexValues","alignContent","alignSelf","alignItems","justifyContent","flexBasis","auto","inherit","initial","none","unset","flexboxIE","flexboxOld","WebkitBoxOrient","WebkitBoxDirection","wrap","flexWrap","gradient_1","grad","gradient","grid_1","_slicedToArray","_arr","_n","_s","sliceIterator","isSimplePositionValue","isNaN","displayValues","propertyConverters","propertyConverter","alignmentValues","grid","msGridRowAlign","msGridColumn","_value$split$map","position","_value$split$map2","start","gridColumnStart","gridColumnEnd","msGridColumnSpan","msGridRow","_value$split$map3","_value$split$map4","gridRowStart","gridRowEnd","msGridRowSpan","gridTemplateColumns","msGridColumns","gridTemplateRows","msGridRows","justifySelf","msGridColumnAlign","imageSet_1","imageSet","logical","alternativePropList","marginBlockStart","marginBlockEnd","marginInlineStart","marginInlineEnd","paddingBlockStart","paddingBlockEnd","paddingInlineStart","paddingInlineEnd","borderBlockStart","borderBlockStartColor","borderBlockStartStyle","borderBlockStartWidth","borderBlockEnd","borderBlockEndColor","borderBlockEndStyle","borderBlockEndWidth","borderInlineStart","borderInlineStartColor","borderInlineStartStyle","borderInlineStartWidth","borderInlineEnd","borderInlineEndColor","borderInlineEndStyle","borderInlineEndWidth","sizing_1","maxHeight","maxWidth","width","height","columnWidth","minWidth","minHeight","sizing","uppercasePattern","msPattern","cache","toHyphenLower","_hyphenateStyleName","freeze","hName","hyphenateProperty_1","_hyphenateStyleName2","transition_1","propertyPrefixMap","outputValue","multipleValues","singleValue","dashCaseProperty","_hyphenateProperty2","pLen","prefixMapping","prefixValue","webkitOutput","mozOutput","transition","transitionProperty","WebkitTransition","WebkitTransitionProperty","MozTransition","MozTransitionProperty","Webkit","Moz","ms","w","wm","wms","wmms","prefixAll","defaultSelectorHandlers","selector","baseSelector","generateSubtreeStyles","generated","generateCSS","styleTypes","selectorHandlers","stringHandlers","useImportant","plainDeclarations","generatedStyles","some","newSelector","generatedRuleset","generateCSSRuleset","transformRule","transformValue","arrayToObjectKeysReducer","acc","declarations","stringHandlerKeys","runStringHandlers","originalElements","prefixedElements","elementNames","originalStyle","originalIndex","rules","styleTag","fontFamily","nameMap","injectStyleOnce","animationName","finalVal","valVal","valKey","injectGeneratedCSSOnce","alreadyInjected","injectionBuffer","isBuffering","generatedCSS","_injectionBuffer","flushToStyleTag","definitions","resetInjectedStyle","flushToArray","ret","cssRules","querySelector","setAttribute","appendChild","sheet","styleSheet","insertRule","numRules","rule","innerText","injectStyleTag","processStyleDefinitions","styleDefinitions","classNameBits","definitionBits","def","_name","_definition","_len","injectAndGetClassName","unminifiedHashFn","hashFn","StyleSheet","sheetDefinition","mappedSheetDefinition","stringVal","rehydrate","StyleSheetServer","renderStatic","renderFunc","startBuffering","css","content","renderedClassNames","Aphrodite","makeExports","extensions","extensionSelectorHandlers","extension","selectorHandler","StyleSheetTestUtils","minify","shouldMinify","dayjsClass","dayjsFactory","defaultWorkingWeekdays","getWorkingWeekdays","workingWeekdays","setWorkingWeekdays","getHolidays","holidays","setHolidays","getHolidayFormat","holidayFormat","setHolidayFormat","getAdditionalWorkingDays","additionalWorkingDays","setAdditionalWorkingDays","getAdditionalWorkingDayFormat","additionalWorkingDayFormat","setAdditionalWorkingDayFormat","isHoliday","isBusinessDay","isAdditionalWorkingDay","day","businessDaysAdd","days","numericDirection","currentDay","daysRemaining","add","businessDaysSubtract","businessDiff","date","day1","day2","isPositiveDiff","daysBetween","isSame","nextBusinessDay","loopIndex","prevBusinessDay","subtract","businessDaysInMonth","isValid","startOf","monthEnd","endOf","businessDays","monthComplete","isAfter","lastBusinessDayOfMonth","businessWeeksInMonth","businessWeeks","u","$locale","weekStart","Ls","locale","formats","months","monthsShort","firstDayOfWeek","weekdays","weekdaysMin","weekdaysShort","longDateFormat","meridiem","ordinal","localeData","future","past","mm","hh","dd","MM","yy","fromToBase","en","relativeTime","thresholds","diff","rounding","$u","utc","toNow","fromNow","baseIsEqual","other","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","INFINITY","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","RegExp","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","parseFloat","freeParseInt","freeGlobal","freeSelf","root","freeExports","nodeType","freeModule","moduleExports","freeProcess","nodeUtil","types","require","binding","nodeIsArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","func","arrayAggregator","setter","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","overArg","transform","replaceHolders","placeholder","setToArray","setToPairs","stringSize","lastIndex","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","uid","defaults","pick","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","allocUnsafe","getPrototype","getPrototypeOf","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","reverse","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","skip","number","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","cloneDataView","cloneTypedArray","regexp","cloneRegExp","symbol","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","isFunction","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInvoke","parent","baseIsArguments","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","othProps","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","newValue","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","comparer","baseSortBy","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","indexes","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","methodName","trailing","createCompounder","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","flatten","otherFunc","getValue","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","remaining","rand","memoize","memoizeCapped","quote","subString","difference","differenceBy","differenceWith","findIndex","findLastIndex","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bindKey","WRAP_BIND_FLAG","debounce","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","defer","delay","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","isNumber","isString","lt","lte","toArray","iteratorToArray","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","merge","omit","CLONE_DEEP_FLAG","basePick","pickBy","toPairs","toPairsIn","camelCase","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","pattern","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","over","overEvery","overSome","basePropertyDeep","range","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","minuend","subtrahend","after","castArray","compact","cond","conforms","baseConforms","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","fill","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","mapKeys","mapValues","matches","matchesProperty","nthArg","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","limit","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","escapeRegExp","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEqual","isEqualWith","isMatch","isMatchWith","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","maxBy","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","strLength","padEnd","radix","floating","temp","reduceRight","repeat","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","newEnd","uniqueId","each","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","getView","iterLength","takeCount","iterIndex","commit","wrapped","globalThis","__webpack_modules__","__unused_webpack_module","__w_pdfjs_require__","VerbosityLevel","Util","UnknownErrorException","UnexpectedResponseException","UNSUPPORTED_FEATURES","TextRenderingMode","StreamType","RenderingIntentFlag","PermissionFlag","PasswordResponses","PasswordException","PageActionEventType","OPS","MissingPDFException","LINE_FACTOR","LINE_DESCENT_FACTOR","InvalidPDFException","ImageKind","IDENTITY_MATRIX","FormatError","FontType","FeatureTest","FONT_IDENTITY_MATRIX","DocumentActionEventType","CMapCompressionType","BaseException","AnnotationType","AnnotationStateModelType","AnnotationReviewState","AnnotationReplyType","AnnotationMode","AnnotationMarkedState","AnnotationFlag","AnnotationFieldFlag","AnnotationEditorType","AnnotationEditorPrefix","AnnotationEditorParamsType","AnnotationBorderStyleType","AnnotationActionEventType","AbortException","arrayByteLength","arraysToBytes","resultLength","pos","stringToBytes","itemLength","assert","unreachable","bytesToString","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","subarray","createPromiseCapability","isSettled","promise","createValidAbsoluteUrl","url","baseUrl","addDefaultProtocol","dots","tryConvertEncoding","stringToUTF8String","ex","absoluteUrl","URL","protocol","_isValidProtocol","escapeString","getModificationDate","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getVerbosityLevel","verbosity","info","INFOS","isArrayEqual","ii","isAscii","objectFromMap","setVerbosityLevel","shadow","string32","stringToPDFString","PDFStringTranslateTable","stringToUTF16BEString","char","utf8StringToString","ANY","DISPLAY","PRINT","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","NONE","FREETEXT","INK","FREETEXT_SIZE","FREETEXT_COLOR","FREETEXT_OPACITY","INK_COLOR","INK_THICKNESS","INK_OPACITY","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","TEXT","LINK","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","MARKED","REVIEW","UNMARKED","ACCEPTED","REJECTED","CANCELLED","COMPLETED","GROUP","REPLY","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","SOLID","DASHED","BEVELED","INSET","E","X","D","U","Fo","Bl","PO","PC","PV","PI","V","WC","WS","DS","WP","DP","O","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","TYPE1","TYPE1STANDARD","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","ERRORS","WARNINGS","BINARY","STREAM","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","restore","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","signatures","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorOperatorList","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","errorContentSubStream","NEED_PASSWORD","INCORRECT_PASSWORD","super","isLittleEndian","buffer8","isEvalSupported","isOffscreenCanvasSupported","OffscreenCanvas","hexNumbers","makeHexColor","scaleMinMax","minMax","m1","m2","applyTransform","applyInverseTransform","getAxialAlignedBoundingBox","p1","p2","p3","p4","inverseTransform","apply3dTransform","singularValueDecompose2dScale","transpose","sy","normalizeRect","rect","rect1","rect2","xLow","xHigh","yLow","yHigh","bezierBoundingBox","x0","y0","x1","y1","y2","x3","y3","tvalues","bounds","b2ac","sqrtb2ac","mt","jlen","__unused_webpack_exports","isNodeJS","versions","nw","electron","build","RenderTask","PDFWorkerUtil","PDFWorker","PDFPageProxy","PDFDocumentProxy","PDFDocumentLoadingTask","PDFDataRangeTransport","LoopbackPort","DefaultStandardFontDataFactory","DefaultCanvasFactory","DefaultCMapReaderFactory","getDocument","setPDFNetworkStreamFactory","_util","_annotation_storage","_display_utils","_font_loader","_canvas","_worker_options","_is_node","_message_handler","_metadata","_optional_content_config","_transport_stream","_xfa_text","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DOMCanvasFactory","DOMCMapReaderFactory","DOMStandardFontDataFactory","createPDFNetworkStream","NodeCanvasFactory","NodeCMapReaderFactory","NodeStandardFontDataFactory","pdfNetworkStreamFactory","task","rangeTransport","worker","CMapReaderFactory","StandardFontDataFactory","ignoreErrors","stopAtErrors","fontExtraProperties","pdfBug","enableXfa","rangeChunkSize","docBaseUrl","isDataScheme","maxImageSize","cMapUrl","standardFontDataUrl","useWorkerFetch","disableFontFace","useSystemFonts","ownerDocument","disableRange","disableStream","disableAutoFetch","workerParams","GlobalWorkerOptions","workerPort","fromPort","_worker","docId","destroyed","workerIdPromise","_fetchDocument","networkStreamPromise","networkStream","PDFDataTransportStream","initialData","progressiveDone","contentDispositionFilename","httpHeaders","workerId","messageHandler","MessageHandler","WorkerTransport","_transport","_capability","pdfDataRangeTransport","sendWithPromise","apiVersion","static","onPassword","onUnsupportedFeature","destroy","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","addRangeListener","addProgressListener","addProgressiveReadListener","addProgressiveDoneListener","onDataRange","begin","onDataProgress","loaded","onDataProgressiveRead","onDataProgressiveDone","transportReady","requestDataRange","pdfInfo","_pdfInfo","fingerprints","streamTypes","fontTypes","annotationStorage","numPages","isPureXfa","_htmlForXfa","allXfaHtml","getPage","pageNumber","getPageIndex","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJavaScript","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getPermissions","getMetadata","getMarkInfo","getDownloadInfo","downloadInfoCapability","cleanup","keepLoadedFonts","startCleanup","loadingTask","loadingParams","saveDocument","getFieldObjects","hasJSActions","getCalculationOrderIds","pageIndex","pageInfo","_pageIndex","_pageInfo","_ownerDocument","_stats","StatTimer","_pdfBug","commonObjs","objs","PDFObjects","_bitmaps","cleanupAfterRender","pendingCleanup","_intentStates","_annotationPromises","rotate","userUnit","getViewport","scale","rotation","offsetX","offsetY","dontFlip","PageViewport","viewBox","getAnnotations","intent","intentArgs","getRenderingIntent","cacheKey","renderingIntent","annotations","annotation","titleObj","contentsObj","_jsActionsPromise","getPageJSActions","getXfa","canvasContext","viewport","annotationMode","imageLayer","canvasFactory","background","optionalContentConfigPromise","annotationCanvasMap","pageColors","printAnnotationStorage","renderInteractiveForms","includeAnnotationStorage","intentState","streamReaderCancelTimeout","canvasFactoryInstance","intentPrint","displayReadyCapability","operatorList","fnArray","argsArray","lastChunk","separateAnnots","_pumpOperatorList","renderTasks","internalRenderTask","_tryCleanup","_abortOperatorList","timeEnd","InternalRenderTask","useRequestAnimationFrame","renderTask","transparency","optionalContentConfig","initializeGraphics","operatorListChanged","getOperatorList","opListTask","opListReadCapability","streamTextContent","disableCombineTextItems","includeMarkedContent","sendWithStream","combineTextItems","highWaterMark","textContent","getTextContent","xfa","XfaText","readableStream","reader","getReader","styles","pump","read","getStructTree","_structTreePromise","_destroy","waitOn","force","bitmap","resetStats","_startRenderPage","_renderPageChunk","operatorListChunk","annotationStorageMap","streamReader","RenderingCancelledException","curCacheKey","curIntentState","_listeners","_deferred","postMessage","transfers","structuredClone","removeEventListener","terminate","isWorkerDisabled","fallbackWorkerSrc","fakeWorkerId","pdfjsFilePath","currentScript","isSameOrigin","otherUrl","base","createCDNWrapper","createObjectURL","Blob","_port","_webWorker","_messageHandler","_initializeFromPort","_initialize","_mainThreadWorkerMessageHandler","workerSrc","Worker","terminateEarly","onWorkerError","_setupFakeWorker","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","pdfjsWorker","loader","mainWorkerMessageHandler","eval","loadScript","getWorkerSrc","fontLoader","FontLoader","_onUnsupportedFeature","styleElement","_params","isCompressed","cMapPacked","destroyCapability","_passwordCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","AnnotationStorage","isOpList","annotationMap","PrintAnnotationStorage","serializable","getHash","page","resetModified","terminated","_getFieldObjectsPromise","_hasJSActionsPromise","cancelAllRequests","sink","getFullReader","evt","onPull","enqueue","onCancel","ready","readyReason","headersCapability","fullReader","headersReady","isStreamingSupported","isRangeSupported","contentLength","rangeReader","getRangeReader","_numPages","htmlForXfa","exception","updatePassword","exportedData","exportedError","fontRegistry","FontInspector","enabled","registerFont","fontAdded","FontFaceObject","finally","imageData","pageProxy","MAX_IMAGE_SIZE_TO_STORE","featureId","cachedPromise","num","gen","filename","results","OptionalContentConfig","Metadata","objId","settled","onContinue","form","canvas","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","StepperManager","stepper","nextBreakPoint","getNextBreakPoint","gfx","CanvasGraphics","beginDrawing","endDrawing","updateOperatorList","requestAnimationFrame","executeOperatorList","_editor","_murmurhash","_storage","_modified","onSetModified","onResetModified","onAnnotationEditor","getRawValue","AnnotationEditor","setValue","modified","_type","getAll","print","MurmurHash3_64","hexdigest","_tools","focusin","focusout","_zIndex","ColorManager","parameters","div","viewportBaseDimensions","isAttachedToDOM","_defaultLineColor","_colorManager","getHexCode","setInBackground","setInForeground","setSelected","relatedTarget","closest","preventDefault","isMultipleSelection","commitOrRemove","addToAnnotationStorage","dragstart","getBoundingClientRect","startX","clientX","startY","clientY","dataTransfer","effectAllowed","setAt","tx","ty","screenToPageTranslation","left","top","translate","setDims","parentWidth","parentHeight","getInitialTranslation","bindEvents","pointerdown","isMac","KeyboardManager","button","ctrlKey","shiftKey","metaKey","toggleSelected","getRect","pageWidth","pageHeight","pageDimensions","shiftX","shiftY","getRectInCurrentCoords","onceAdded","enableEditMode","disableEditMode","isInEditMode","shouldGetKeyboardEvents","needsToBeRebuilt","rebuild","editor","getNextId","select","classList","unselect","updateParams","disableEditing","enableEditing","propertiesToUpdate","contentDiv","isEditing","setActiveEditor","CommandManager","AnnotationEditorUIManager","names","opacityToHex","IdManager","getId","cmd","undo","mustExec","NaN","overwriteIfSameType","keepUndo","redo","hasSomethingToUndo","hasSomethingToRedo","allKeys","isMacKey","isWin","altKey","stopPropagation","ClipboardManager","el","paste","_colors","colors","getColorValues","color","rgb","getRGB","matchMedia","RGB","_colorsMapping","keydown","onEditingAction","onPageChanging","hasEmptyClipboard","hasSelectedEditor","selectAll","cut","unselectAll","container","eventBus","_on","_off","layer","focusMainContainer","focus","getActive","_keyboardManager","dispatch","setEditingState","registerEditorTypes","editorType","defaultPropertiesToUpdate","addLayer","enable","disable","removeLayer","updateMode","updateToolbar","updateDefaultParams","getEditors","editors","getEditor","addEditor","removeEditor","addOrRebuild","hasSelection","ed","isSelected","addCommands","newEditors","isActive","PixelsPerInch","PDFDateString","DOMSVGFactory","AnnotationPrefix","visibility","computedColor","getComputedStyle","getCurrentTransform","ctx","getTransform","getCurrentTransformInverse","invertSelf","getFilenameFromUrl","anchor","getPdfFilenameFromUrl","defaultFilename","reFilename","splitURI","suggestedFilename","getXfaPageViewport","xfaPage","attributes","isPdfFile","isValidFetchUrl","removeScriptElement","onload","documentElement","_base_factory","CSS","PDF","BaseCanvasFactory","_document","_createCanvas","fetchData","asTypedArray","baseURI","DONE","BaseCMapReaderFactory","_fetchData","compressionType","cMapData","BaseStandardFontDataFactory","BaseSVGFactory","_createSVG","createElementNS","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","pdfDateStringRegex","colorRGB","started","outBuf","longest","duration","toDateObject","year","month","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","getContext","canvasAndContext","skipDimensions","svg","SEED","MASK_HIGH","MASK_LOW","seed","h1","h2","blockCounts","tailLength","dataUint32","k1","C1","C2","C1_LOW","C2_LOW","hex1","hex2","BaseFontLoader","nativeFontFaces","addNativeFontFace","nativeFontFace","fonts","attached","missingFile","isFontLoadingAPISupported","createNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","hasFonts","_loadTestFont","fontsToLoad","loadingContext","requests","nextRequestId","loadTestFontId","supported","otherRequest","int32","spliceString","insert","called","XXXX_VALUE","checksum","btoa","loadedName","isFontReady","fillText","getImageData","translatedData","compiledGlyphs","cssFontInfo","weight","italicAngle","FontFace","mimetype","getPathGenerator","character","cmds","jsBuf","_pattern_helper","_image_utils","MAX_GROUP_SIZE","MAX_SIZE_TO_COMPILE","Path2D","FULL_CHUNK_HEIGHT","CachedCanvases","getCanvas","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","setTransform","sign","drawImage","hypot","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","fillColor","strokeColor","patternFill","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","startNewPathAndClipBox","clipBox","setCurrentPoint","updatePathMinMax","minX","minY","maxX","maxY","updateRectMinMax","updateScalingPathMinMax","updateCurvePathMinMax","box","getPathBoundingBox","pathType","PathType","xStrokePad","yStrokePad","updateClipFromPath","isEmptyClip","getClippedPathBoundingBox","putBinaryImageData","imgData","ImageData","putImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","createImageData","destPos","srcPos","thisChunkHeight","elemsInThisChunk","transferMapRed","transferMapGreen","transferMapBlue","transferMapGray","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","srcDiff","kEnd","kEndUnrolled","mask","srcByte","hasTransferMaps","putBinaryImageMask","applyMaskImageData","copyCtxState","sourceCtx","destCtx","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","foregroundColor","strokeStyle","fillStyle","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","composeSMaskBackdrop","r0","g0","b0","alpha","alpha_","composeSMaskAlpha","maskData","layerData","transferMap","composeSMaskLuminosity","composeSMask","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","maskCtx","backdrop","maskOffsetX","maskOffsetY","hasBackdrop","composeFn","chunkSize","row","chunkHeight","genericComposeSMask","getImageSmoothingEnabled","fround","actualScale","devicePixelRatio","PDF_TO_CSS_UNITS","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","canvasCtx","stateStack","pendingClip","pendingEOFill","xobjs","groupStack","processingType3","baseTransform","baseTransformStack","groupLevel","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","markedContentStack","cachedCanvases","cachedPatterns","viewportScale","outputScaleX","outputScaleY","backgroundColor","foreground","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","defaultBackgroundColor","fg","bg","isValidDefaultBg","defaultBg","rB","gB","bB","newComp","lumB","selectColor","lumC","fillRect","transparentCanvas","compositeCtx","beginLayout","executionStartIdx","continueCallback","argsArrayLen","chunkOperations","endTime","steps","fnId","breakIt","depObjId","objsPool","inSMaskMode","HTMLCanvasElement","endLayout","_scaleImage","img","tmpCanvas","tmpCtx","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","clearRect","_createMaskCanvas","isPatternFill","currentTransform","scaled","maskCanvas","mainKey","withoutTranslation","cachedImage","maskToCanvas","cord1","cord2","drawnWidth","drawnHeight","fillCanvas","fillCtx","imageSmoothingEnabled","inverse","getPattern","dashArray","dashPhase","flatness","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","beginPath","angle","cp1x","cp1y","cp2x","cp2y","mirrorContextOperations","compose","dirtyBox","old","isScalingMatrix","minMaxForBezier","xw","yh","consumePath","rescaleAndStroke","needRestore","pendingTextPaths","addToPath","spacing","fontRefName","fontObj","fontDirection","isType3Font","bold","italic","typeface","fallbackName","browserFontSize","rise","paintChar","patternTransform","fillStrokeMode","isAddToPathSet","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","getSinglePixelWidth","glyph","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","charWidth","vmetric","vx","vy","remeasure","measuredWidth","measureText","characterScaleX","isInFont","scaledAccentX","scaledAccentY","spacingLength","charProcOperatorList","operatorListId","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","IR","canvasGraphicsFactory","createCanvasGraphics","TilingPattern","_getPattern","matrix","getShadingPattern","SHADING","inv","bl","br","ul","ur","bbox","currentCtx","isolated","knockout","canvasBounds","scaleX","scaleY","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","canvasWidth","canvasHeight","annotationCanvas","savedCtx","compiled","POINT_TYPES","width1","j0","points","lineSize","p0","pp","compileType3Glyph","skewX","skewY","positions","trans","images","image","imgToPaint","HTMLElement","appendImage","visible","isVisible","isContentVisible","absDet","normX","normY","getScaleForStroking","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","savedMatrix","savedDashes","savedDashOffset","RadialAxialShadingPattern","MeshShadingPattern","DummyShadingPattern","applyBoundingBox","region","BaseShadingPattern","_bbox","_colorStops","_p0","_p1","_r0","_r1","_createGradient","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","ownerBBox","createPattern","domMatrix","DOMMatrix","drawTriangle","c1","c2","c3","coords","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","_coords","_figures","_bounds","_background","_createMeshCanvas","combinedScale","boundsWidth","boundsHeight","paddedWidth","BORDER_SIZE","paddedHeight","matrixScale","temporaryPatternCanvas","PaintType","MAX_PATTERN_SIZE","xstep","ystep","paintType","tilingType","createPatternCanvas","curMatrixScale","dimx","getSizeAndScale","dimy","graphics","setFillAndStrokeStyleToContext","adjustedX0","adjustedY0","adjustedX1","adjustedY1","clipBbox","realOutputSize","bboxWidth","bboxHeight","cssColor","inverseDecode","opaque","zeroMapping","oneMapping","widthInSource","widthRemainder","CallbackKind","StreamKind","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","_processStreamMessage","cbSourceName","cbTargetName","_createStreamSink","actionName","ah","queueingStrategy","ReadableStream","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pullCapability","cancelCapability","streamSink","isCancelled","lastDesiredSize","sinkCapability","streamController","_deleteStreamController","allSettled","parsedData","rawData","getRaw","INTERNAL","OptionalContentGroup","_setVisible","internal","creator","groups","baseState","expression","policy","ids","setVisibility","hasInitialVisibility","getOrder","getGroups","getGroup","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","_onReceiveData","_onProgress","_onProgressiveDone","_enqueue","found","_begin","_progressiveDataLength","_loaded","firstReader","_removeRangeReader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","_stream","_done","_filename","_requests","_headersReady","requestCapability","_end","_queuedChunk","output","walk","node","shouldBuildText","child","readFile","createCanvas","AnnotationEditorLayer","_freetext","_ink","pointerup","_initialized","FreeTextEditor","initialize","l10n","InkEditor","uiManager","accessibilityManager","addInkEditorIfNeeded","disableClick","enableClick","isCommitting","pointerEvents","removePointerInTextLayer","display","activeElement","moveEditorInDOM","moveElementInDOM","addANewEditor","addUndoableEditor","annotationType","dropEffect","endX","endY","dragover","setDimensions","scaleFactor","pageLLx","pageLLy","pageURx","pageURy","flipOrientation","widthStr","heightStr","editorDivBlur","editorDivFocus","editorDivKeydown","_defaultColor","_defaultFontSize","_l10nPromise","_internalPadding","getPropertyValue","setFontsize","editorDiv","savedFontsize","savedColor","overlayDiv","contentEditable","draggable","divs","nodeName","dblclick","removeAttribute","baseX","baseY","line","createTextNode","_pdfjsFitCurve","fitCurve","RESIZER_SIZE","canvasPointermove","canvasPointerleave","canvasPointerup","canvasPointerdown","thickness","bezierPath2D","currentPath","translationX","translationY","_defaultThickness","_defaultOpacity","savedThickness","savedOpacity","lastX","lastY","bezier","xy","path2D","ResizeObserver","contentRect","observe","roundedWidth","roundedHeight","scaleFactorW","scaleFactorH","control1","control2","p10","p11","p20","p21","p30","p31","p40","p41","q10","q11","q20","q21","ax","ay","bx","by","xMin","xMax","yMin","yMax","firstTime","prevTranslationX","prevTranslationY","unscaledPadding","fitCubic","leftTangent","rightTangent","progressCallback","bezCurve","uPrime","maxError","prevErr","splitPoint","prevSplit","centerVector","toCenterTangent","fromCenterTangent","beziers","dist","maths","vectorLen","addArrays","mulItems","currU","prevU","prevP","chordLengthParameterize","generateAndReport","reparameterize","errChange","normalize","paramsOrig","paramsPrime","A","det_C0_C1","det_C0_X","det_X_C1","alpha_l","alpha_r","epsilon","segLength","ux","firstPoint","lastPoint","zeros_Xx2x2","dot","generateBezier","bez","maxDist","point","t_distMap","mapTtoRelativeDistances","find_t","computeMaxError","maxErr","maxPoint","newtonRaphsonRootFind","qprime","numerator","mulMatrix","denominator","squareItems","qprimeprime","B_parts","B_t_curr","B_t_dist","B_t_prev","sumLen","lenMin","tMax","tMin","createTangent","pointA","pointB","zs","addItems","addition","divItems","ctrlPoly","pA","pB","pC","pD","AnnotationLayer","_scripting_utils","_xfa_layer","DEFAULT_TAB_INDEX","GetElementsByNameSet","getRectDims","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","linkService","downloadManager","imageResourcesPath","renderForms","svgFactory","enableScripting","_fieldObjects","fieldObjects","_mouseState","mouseState","_createContainer","quadrilaterals","_createQuadrilaterals","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","setRotation","elementWidth","elementHeight","_commonActions","setColor","jsName","styleName","detail","ColorConverters","hidden","preventScroll","userName","title","readonly","required","_setRequired","bgColor","fgColor","textColor","_dispatchEventFromSandbox","jsEvent","commonActions","_setDefaultPropertiesFromJS","storedData","quadPoints","savedRect","quadPoint","_createPopup","trigger","popup","PopupElement","modificationDate","richText","hideWrapper","_renderQuadrilaterals","quadrilateral","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","getElementsByName","isTooltipOnly","link","isBound","addLinkAttributes","newWindow","_bindNamedAction","_bindLink","_bindJSAction","resetForm","_bindResetFormAction","linkElement","cloneNode","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","storage","allIds","dispatchEvent","Event","hasPopup","alt","dataset","l10nId","l10nArgs","alternativeText","_getKeyModifier","_setEventListener","baseName","valueGetter","modifier","_setEventListeners","_setBackgroundColor","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","computedFontSize","multiLine","textAlignment","textAlign","isRequired","hasAppearance","fieldValue","setPropertyOnSiblings","keyInStorage","formattedValue","maxLen","charLimit","elementData","userValue","valueOnFocus","doNotScroll","overflowY","overflowX","disabled","readOnly","tabIndex","defaultFieldValue","blurListener","scrollLeft","selRange","setSelectionRange","willCommit","commitKey","selStart","selectionStart","selEnd","selectionEnd","_blurListener","isDown","Keystroke","inputType","comb","combWidth","letterSpacing","verticalAlign","checked","checkbox","curChecked","buttonValue","radio","pdfButtonValue","lastChild","selectElement","addAnEmptyEntry","combo","multiSelect","multiple","option","selected","optionElement","displayValue","removeEmptyEntry","noneOptionElement","isExport","selectedIndex","getItems","multipleSelection","selectChild","indices","editable","changeEx","keyDown","parentType","parentId","parentElements","querySelectorAll","parentRect","popupLeft","popupTop","pinned","hideElement","dateObject","toLocaleDateString","toLocaleTimeString","contents","_formatContents","XfaLayer","xfaHtml","_toggle","_show","_hide","lines","pin","unpin","lineSpan","lineCoordinates","square","circle","containerClassName","svgElementName","coordinate","vertices","polyline","inkList","inkLists","file","_download","openOrDownloadData","contentElement","rendered","renderedElement","replaceWith","makeColorComp","CMYK_G","G_CMYK","G_RGB","G_HTML","G","RGB_G","RGB_HTML","T_HTML","CMYK_RGB","CMYK_HTML","components","RGB_CMYK","setupStorage","xfaOn","xfaOff","getAttribute","setAttributes","isHTMLAnchorElement","HTMLAnchorElement","dataId","rootHtml","rootDiv","textDivs","childHtml","xmlns","TextLayerRenderTask","renderTextLayer","renderParameters","textContentStream","textContentItemsStr","enhanceTextSelection","_render","DEFAULT_FONT_SIZE","DEFAULT_FONT_ASCENT","ascentCache","AllWhitespaceRegexp","appendText","geom","textDiv","textDivProperties","_enhanceTextSelection","hasText","hasEOL","originalTransform","paddingBottom","paddingLeft","paddingRight","paddingTop","_textDivs","_viewport","atan2","fontName","fontHeight","fontAscent","cachedAscent","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","pixels","getAscent","cos","_fontInspectorEnabled","shouldScaleText","absScaleX","absScaleY","_textDivProperties","_textContentStream","_layoutText","angleCos","angleSin","divWidth","divHeight","right","bottom","_canceled","textDivsLength","_renderingDone","findPositiveMin","ts","expand","expanded","boxes","x1New","x2New","expandBoundsLTR","expandBounds","divProperties","jj","boxScale","horizon","boundary","horizonPart","affectedBoundary","maxXNew","xNew","changedHorizon","lastBoundary","useBoundary","used","_textContent","_container","_textContentItemsStr","_reader","_layoutTextLastFontSize","_layoutTextLastFontFamily","_layoutTextCtx","_renderTimer","_devicePixelRatio","_processItems","styleCache","textItems","textStyles","expandTextDivs","expandDivs","transformBuf","paddingBuf","divProps","SVGGraphics","SVG_DEFAULTS","fontStyle","XML_NS","XLINK_NS","forceDataSchema","digits","b1","b2","b3","convertImgDataToPng","PNG_HEADER","crcTable","writePngChunk","crc","crc32","deflateSyncUncompressed","literals","maxBlockLength","deflateBlocks","idat","pi","adler","adler32","isMask","bitDepth","colorType","offsetLiterals","offsetBytes","ihdr","deflateSync","pngLength","CHUNK_WRAPPER_SIZE","SVGExtraState","dependencies","activeClipUrl","clipGroup","maskId","opListToTree","opList","opTree","opListElement","pf","toFixed","pm","acos","clipCount","maskCount","shadingCount","transformMatrix","transformStack","extraStack","embedFonts","embeddedFonts","cssStyle","_operatorIdMapping","tgrp","executeOpTree","loadDependencies","getSVG","svgElement","convertOpList","operatorIdMapping","opTreeElement","lineMatrix","xcoords","ycoords","tspan","setAttributeNS","txtElement","txtgrp","lineWidthScale","_setStrokeAttributes","_ensureTransformGroup","addFontStyle","defs","hasChildNodes","setStrokeAlpha","setFillAlpha","_makeColorN_Pattern","_makeShadingPattern","_makeTilingPattern","tilingId","tx0","ty0","tx1","ty1","xscale","yscale","txstep","tystep","tiling","childNodes","shadingId","colorStops","point0","point1","focalPoint","circlePoint","focalRadius","circleRadius","stop","getAttributeNS","clipId","clipPath","clipElement","imgSrc","cliprect","imgEl","rootGroup","_ensureClipGroup","PDFNodeStream","_network_utils","fs","https","fileUriRegex","sourceUrl","parsedUrl","parseUrl","isHttp","isFsUrl","_rangeRequestReaders","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_url","_storedError","_disableRange","_rangeChunkSize","_readableStream","_readCapability","_headersCapability","_error","_setReadableStream","BaseRangeReader","createRequestOptions","hostname","handleResponse","allowRangeRequests","suggestedLength","validateRangeRequestCapabilities","extractFilenameFromHeader","_request","_httpHeaders","Range","lstat","stat","createReadStream","createResponseStatusError","contentDisposition","_content_disposition","getFilenameFromContentDispositionHeader","returnValues","validateResponseStatus","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","contentDispositionStr","quot","part","rfc2231getparam","attributePattern","textdecode","quotindex","extvalue","encodingend","hex","PDFNetworkStream","NetworkManager","getXhr","currXhrId","requestRange","requestFull","xhrId","pendingRequest","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","getArrayBuffer","rangeHeader","getRequestXhr","isPendingRequest","abortRequest","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_onHeadersReceived","_onDone","_onError","_fullRequestId","_headersReceivedCapability","_cachedChunks","fullRequestXhrId","fullRequestXhr","lengthComputable","_requestId","_close","PDFFetchStream","createFetchOptions","abortController","signal","redirect","createHeaders","PDFFetchStreamReader","PDFFetchStreamRangeReader","_withCredentials","_abortController","_headers","__webpack_module_cache__","cachedModule","_annotation_editor_layer","_annotation_layer","_api","_svg","_text_layer","useEvent","fnRef","memoFn","_fnRef$current","useInternalLayoutEffect","useLayoutEffect","deps","firstMountRef","useLayoutUpdateEffect","firstMount","useSafeState","destroyRef","_React$useState","_React$useState2","ignoreDestroy","hasValue","warned","preWarningFns","warning","valid","note","warningOnce","preMessage","resetWarned","noteOnce","obj1","obj2","shallow","refSet","deepEqual","circular","newLevel","getOffset","getDirectionStyle","direction","positionStyle","getIndex","KeyCode","MAC_ENTER","BACKSPACE","TAB","NUM_CENTER","ENTER","SHIFT","CTRL","ALT","PAUSE","CAPS_LOCK","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","PRINT_SCREEN","INSERT","DELETE","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","QUESTION_MARK","B","I","J","L","N","Q","R","S","Y","Z","META","WIN_KEY_RIGHT","CONTEXT_MENU","NUM_ZERO","NUM_ONE","NUM_TWO","NUM_THREE","NUM_FOUR","NUM_FIVE","NUM_SIX","NUM_SEVEN","NUM_EIGHT","NUM_NINE","NUM_MULTIPLY","NUM_PLUS","NUM_MINUS","NUM_PERIOD","NUM_DIVISION","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NUMLOCK","SEMICOLON","DASH","EQUALS","COMMA","PERIOD","SLASH","APOSTROPHE","SINGLE_QUOTE","OPEN_SQUARE_BRACKET","BACKSLASH","CLOSE_SQUARE_BRACKET","WIN_KEY","MAC_FF_META","WIN_IME","isTextModifyingKeyEvent","keyCode","isCharacterKey","includedStart","includedEnd","keyboard","classNames","_excluded","_getIndex","prefixCls","valueIndex","onStartMove","dragging","onOffsetChange","onChangeComplete","onFocus","onMouseEnter","restProps","_React$useContext","ariaLabelForHandle","ariaLabelledByForHandle","ariaValueTextFormatterForHandle","handlePrefixCls","onInternalStartMove","role","onMouseDown","onTouchStart","onKeyDown","which","onKeyUp","handleNode","handle","handleRender","activeHandleRender","draggingIndex","handlesRef","_handlesRef$current$i","activeIndex","setActiveIndex","handleProps","_onClick","onClick","included","textCls","marks","markPrefixCls","activeStyle","dotClassName","active","mergedStyle","stepDots","dotSet","mark","dotValue","replaceCls","trackPrefixCls","offsetStart","offsetEnd","track","startPoint","trackList","startValue","endValue","tracksNode","tracks","isReactElement","isValidElement","isFragment","getPosition","touches","pageX","pageY","containerRef","rawValues","formatValue","triggerChange","finishChange","offsetValues","draggingValue","setDraggingValue","_React$useState3","_React$useState4","setDraggingIndex","_React$useState5","_React$useState6","cacheValues","setCacheValues","_React$useState7","_React$useState8","originValues","setOriginValues","mouseMoveEventRef","mouseUpEventRef","flushValues","nextValues","nextValue","updateCacheValue","offsetPercent","maxStartOffset","maxEndOffset","formatStartValue","cloneCacheValues","offsetDist","cloneValues","sourceValues","targetValues","startValues","initialValues","originValue","_getPosition","onMouseMove","offSetPercent","_getPosition2","moveX","moveY","_containerRef$current","onMouseUp","Slider","_props$prefixCls","_props$disabled","_props$keyboard","autoFocus","onBlur","_props$min","_props$max","_props$step","onChange","onBeforeChange","onAfterChange","_props$allowCross","allowCross","_props$pushable","pushable","draggableTrack","_props$included","trackStyle","handleStyle","railStyle","dotStyle","activeDotStyle","_props$tabIndex","mergedMin","mergedMax","mergedStep","mergedPush","markList","markObj","_useOffset","formatRangeValue","formatStepValue","stepValue","getDecimal","maxDecimal","fixedValue","formatNextValue","alignValues","closeValue","closeDist","alignValue","offsetValue","targetDistValue","potentialValues","compareValue","valueDist","potentialValue","offsetChangedValue","changed","needPush","pushNum","_offsetChangedValue","_changed","_offsetChangedValue2","_i2","_changed2","_offsetChangedValue3","_i3","_changed3","_offsetChangedValue4","useOffset","_useOffset2","_useMergedState","defaultStateValue","postState","_useState","_useState2","innerValue","setInnerValue","mergedValue","postMergedValue","onChangeFn","_useState3","_useState4","prevValue","setPrevValue","useMergedState","_useMergedState2","valueList","_valueList$","pointCount","_returnValues","rawValuesRef","getTriggerValue","triggerValues","cloneNextValues","finishValue","_useDrag","_useDrag2","onStartDrag","changeToCloseValue","_document$activeEleme","_document$activeEleme2","blur","keyboardValue","setKeyboardValue","mergedDraggableTrack","sortedCacheValues","_React$useMemo","_React$useMemo2","_containerRef$current2","contains","Provider","percent","rail","for","$$typeof","SHARE_SITES","GOOGLE","ICAL","OUTLOOK","YAHOO","WrappedButton","WrappedDropdown","_class","_temp2","_Component","AddToCalendarWrapped","_getPrototypeOf2","_temp","Constructor","_classCallCheck","_possibleConstructorReturn","_getPrototypeOf","_assertThisInitialized","dropdownOpen","currentTarget","blob","_utils","isInternetExplorer","msSaveOrOpenBlob","click","prevState","subClass","superClass","_setPrototypeOf","_inherits","protoProps","staticProps","_defineProperties","_createClass","_this2","_this$props","buttonProps","buttonText","dropdownProps","linkProps","_react","_extends","handleDropdownToggle","isOpen","onRequestClose","handleCalendarButtonClick","buildShareUrl","Component","_propTypes","shape","oneOfType","endDatetime","startDatetime","arrayOf","oneOf","_enums","itm","newObj","_interopRequireWildcard","descriptor","ReferenceError","escapeICSDescription","isMobile","formatDuration","formatDate","vendor","opera","buildShareFile","_ref3","_ref3$description","ctz","_ref3$location","_ref3$timezone","timezone","_ref3$title","encodeURI","_ref4","_ref4$description","_ref4$location","_ref4$timezone","_ref4$title","googleShareUrl","_ref2","yahooShareUrl","keyboardEvents","mouseEvents","touchEvents","allEvents","makeEventProps","getArgs","eventProps","eventHandler","makeCancellablePromise","condition","createContext","propTypes","LinkService","externalLinkTarget","externalLinkRel","pdfDocument","pdfViewer","currentPageNumber","explicitDest","destRef","pagesCount","scrollPageIntoView","rel","isBrowser","isLocalFileSystem","isDefined","isProvided","isDataURI","dataURItoByteString","dataURI","_dataURI$split","_dataURI$split2","headersString","dataString","allowFileAccessFromFilesTip","displayCORSWarning","cancelRunningTask","runningTask","makePageCallback","isCancelException","fileTypes","File","isClassName","isLinkService","isPage","isPdf","isRenderMode","isRotate","enumerableOnly","symbols","getOwnPropertyDescriptors","defineProperties","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","Proxy","Boolean","_isNativeReflectConstruct","Super","NewTarget","pdf","Document","_PureComponent","onItemClick","pages","scrollIntoView","cancellable","findDocumentSource","onSourceSuccess","onLoadProgress","destroyable","fingerprint","onLoadSuccess","onLoadError","onSourceError","_this$props2","setViewer","viewer","setExternalLinkRel","setExternalLinkTarget","setDocument","fileByteString","isBlob","isFile","FileReader","NOT_FOUND_ERR","NOT_READABLE_ERR","SECURITY_ERR","ABORT_ERR","readAsArrayBuffer","loadFromFile","otherParams","_fileByteString","loadDocument","setupLinkService","prevProps","registerPage","unregisterPage","_this$props3","renderMode","childContext","noData","loading","renderChildren","_this$props4","inputRef","renderContent","PureComponent","prompt","isFunctionOrNode","Ref","OutlineItemInternal","getPageNumber","otherProps","subitems","subitem","subitemIndex","renderSubitems","isDestination","Consumer","documentContext","OutlineContext","outlineContext","OutlineInternal","outline","loadOutline","itemIndex","renderOutline","mergeRefs","inputRefs","filteredInputRefs","ANNOTATION_MODE","PageCanvasInternal","createRef","renderer","onRenderSuccess","onRenderError","canvasElement","_assertThisInitialize","renderViewport","canvasBackground","renderContext","cancelRenderingTask","drawPageOnCanvas","_this$props5","canvasRef","userSelect","PageCanvas","PageContext","PageSVGInternal","svgGfx","firstElementChild","_this$viewport","renderSVG","_this$viewport2","drawPageOnContainer","overflow","PageSVG","TextLayerInternal","onGetTextSuccess","onGetTextError","onRenderTextLayerSuccess","onRenderTextLayerError","endElement","loadTextContent","layerElement","customTextRenderer","innerHTML","TextLayer","AnnotationLayerInternal","onGetAnnotationsSuccess","onGetAnnotationsError","onRenderAnnotationLayerSuccess","onRenderAnnotationLayerError","loadAnnotations","renderAnnotationLayer","pageContext","PageInternal","pageElement","loadPage","pageScale","scaleWithDefault","pageKeyNoScale","pageKey","renderMainLayer","Page","propName","componentName","insertAt","cssText","styleInject","createClass","KEY_CODE","ReactCodeInput","classCallCheck","possibleConstructorReturn","_initialiseProps","vals","autoFocusIndex","iRefs","_state","_props","fieldHeight","fieldWidth","INPUT_STYLE","ROOT_STYLE","LOADING_STYLE","onComplete","_this3","__clearvalues__","_props2","validity","nextIndex","prevIndex","toConsumableArray","KEY_PREFIX","FLUSH","REHYDRATE","PERSIST","PURGE","REGISTER","DEFAULT_VERSION","autoMergeLevel1","inboundState","originalState","reducedState","debug","createPersistoid","blacklist","whitelist","storageKey","keyPrefix","defaultSerialize","writeFailHandler","lastState","stagedState","keysToProcess","timeIterator","writePromise","processNextKey","clearInterval","endState","subState","transformer","in","onWriteFail","passWhitelistBlacklist","setInterval","defaultDeserialize","rawState","out","warnIfRemoveError","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","DEFAULT_TIMEOUT","persistReducer","baseReducer","stateReconciler","getStoredState","_persistoid","_purge","_paused","conditionalUpdate","_persist","rehydrated","restState","_sealed","_rehydrate","register","restoredState","migrate","migratedState","migrateErr","purgeStoredState","_newState","initialState","registry","bootstrapped","persistorReducer","firstIndex","persistStore","store","boostrappedCb","_pStore","enhancer","rehydrateAction","persistor","getState","purge","purgeResult","flushResult","pause","persist","manualPersist","PersistGate","onBeforeLift","_unsubscribe","handlePersistorState","_getStorage","storageType","testKey","hasStorage","noopStorage","_default","createThunkMiddleware","extraArgument","thunk","withExtraArgument","formatProdErrorMessage","$$observable","observable","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","reducer","preloadedState","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","isSubscribed","replaceReducer","nextReducer","outerSubscribe","observer","observeState","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","nextState","previousStateForKey","nextStateForKey","applyMiddleware","middlewares","_dispatch","middlewareAPI","middleware","Radio","slider","toggle","handledProps","FormField","control","inline","classes","getUnhandledProps","ElementType","getElementType","errorPointing","errorLabel","Label","autoGenerateKey","pointing","errorLabelBefore","errorLabelAfter","childrenUtils","ariaAttrs","controlProps","Checkbox","htmlFor","FormButton","as","Button","FormCheckbox","FormDropdown","Dropdown","FormGroup","grouped","unstackable","widths","FormInput","Input","FormRadio","Select","selection","Divider","Header","Item","Menu","FormSelect","TextArea","handleChange","handleInput","innerRef","onInput","FormTextArea","Form","handleSubmit","_len2","_key2","inverted","reply","onSubmit","Field","Group","GridRow","centered","columns","divided","only","reversed","stretched","Grid","celled","doubling","padded","relaxed","stackable","Column","GridColumn","Row","computer","floated","largeScreen","mobile","tablet","widescreen","ButtonContent","ButtonGroup","basic","buttons","fluid","icon","labeled","negative","positive","primary","secondary","ButtonOr","computeElementType","computeTabIndex","handleClick","hasIconClass","labelPosition","computeButtonAriaRole","animated","baseClasses","labeledClasses","wrapperClasses","buttonClasses","containerClasses","labelElement","Icon","hasChildren","Content","Or","Container","DimmerDimmable","blurring","dimmed","DimmerInner","contentRef","doesNodeContainClick","componentDidMount","toggleStyles","componentDidUpdate","currentActive","setProperty","removeProperty","simple","childrenContent","Dimmer","handlePortalMount","handlePortalUnmount","Portal","closeOnEscape","closeOnDocumentClick","onMount","onUnmount","openOnTriggerClick","Dimmable","Inner","ImageGroup","Image","avatar","bordered","dimmer","rounded","spaced","ui","_partitionHTMLProps","htmlProps","imgTagProps","rootProps","computeIcon","handleChildOverrides","partitionProps","unhandled","htmlInputProps","actionPosition","iconPosition","transparent","_this$partitionProps","childElements","Children","cloneElement","actionElement","LabelDetail","LabelGroup","handleIconOverrides","predefinedProps","corner","empty","horizontal","onRemove","removeIcon","ribbon","pointingClass","removeIconShorthand","overrideProps","Detail","Loader","indeterminate","htmlInputAttrs","htmlImageProps","partitionHTMLProps","_options","_options$htmlProps","_options$includeAria","includeAria","inputProps","possibleAria","labelRef","canToggle","_this$state","isInputClick","isLabelClick","isRootClick","hasId","isClickFromMouse","handleMouseDown","_this$state2","defaultPrevented","handleMouseUp","_this$state3","setIndeterminate","_this$state4","autoControlledProps","Flag","DropdownDivider","DropdownItem","iconName","ariaOptions","flagElement","iconElement","imageElement","descriptionElement","textElement","opts","DropdownHeader","DropdownMenu","scrolling","DropdownSearchInput","autoComplete","DropdownText","getMenuOptions","additionLabel","additionPosition","allowAdditions","searchQuery","filteredOptions","opt","strippedQuery","re","addItem","getSelectedIndex","newSelectedIndex","menuOptions","enabledIndexes","memo","getKeyOrValue","getKeyAndValues","renderItemContent","searchRef","sizerRef","closeOnChange","moveSelectionOnKeyDown","_moves","selectOnNavigation","move","getSelectedIndexAfterMove","makeSelectedItemActive","openOnSpace","_e$target","_e$target2","_e$target3","shouldHandleEvent","shouldPreventDefault","tagName","isContentEditable","openOnArrow","getSelectedItem","selectedValue","selectItemOnEnter","optionSize","clearSearchQuery","removeItemOnBackspace","closeOnBlur","isMouseDown","handleDocumentMouseUp","minCharacters","_this$state5","handleIconClick","clearable","clearValue","handleItemClick","currentValue","nativeEvent","stopImmediatePropagation","isAdditionItem","handleFocus","handleBlur","_this$props6","selectOnBlur","handleSearchChange","newQuery","handleKeyDown","getItemByValue","getDropdownAriaOptions","_this$props7","handleLabelClick","labelProps","selectedLabel","handleLabelRemove","startIndex","wrapSelection","computeSearchInputTabIndex","_this$props8","computeSearchInputWidth","searchWidth","_this$props9","handleSearchInputOverrides","scrollSelectedItemIntoView","menu","isOutOfUpperView","offsetTop","scrollTop","isOutOfLowerView","clientHeight","setOpenDirection","dropdownRect","menuHeight","spaceAtTheBottom","spaceAtTheTop","upward","triggerSetState","_this$props10","handleClose","hasSearchFocus","hasDropdownFocus","hasFocus","renderText","selectedItem","_this$props11","_this$state6","_text","renderSearchInput","_this$props12","searchInput","renderSearchSizer","_this$props13","renderLabels","_this$props14","renderLabel","_this$state7","selectedItems","renderOptions","_this$props15","lazyLoad","noResultsMessage","_this$state8","optValue","generateKey","renderMenu","_this$props16","getDropdownMenuAriaOptions","menuChild","getInitialAutoControlledState","getAutoControlledStateFromProps","nextProps","computedState","derivedState","__options","__value","shouldComponentUpdate","_this$props17","openOnFocus","openable","_this$props18","_this$props19","_this$state9","SearchInput","Text","ModalActions","handleButtonOverrides","ModalContent","ModalDescription","CLASS_NAME_DELITIMITER","prevClassNames","handleClassNamesChange","classNameRefs","currentClassNames","classNameRef","computeClassNames","_computeClassNamesDif","computeClassNamesDifference","forAdd","forRemoval","nodeRegistry","nodes","del","ModalDimmer","mountNode","bodyClasses","isMounted","useClassNamesOnNode","ModalHeader","Modal","legacy","ActiveXObject","dimmerRef","latestDocumentMouseDownEvent","getMountNode","handleActionsOverrides","onActionClick","actionProps","handleDocumentMouseDown","handleDocumentClick","closeOnDimmerClick","currentDocumentMouseDownEvent","handleOpen","eventPool","setPositionAndClassNames","eventStack","sub","pool","cancelAnimationFrame","animationRequestId","unsub","modalRect","scrollHeight","contextHeight","isFitted","innerHeight","legacyStyles","marginTop","marginLeft","getLegacyStyles","closeIcon","closeIconName","closeIconJSX","componentWillUnmount","portalPropNames","portalProps","onOpen","Description","is","useState","useEffect","useDebugValue","getSnapshot","useSyncExternalStore","hasOwn","appendClass","parseValue","newClass","FocusManager","onSubscribe","setEventListener","onUnsubscribe","_this$cleanup","hasListeners","_this$cleanup2","focused","setFocused","isFocused","visibilityState","focusManager","defaultLogger","Mutation","defaultOptions","mutationId","mutationCache","observers","getDefaultState","scheduleGc","updateCacheTime","cacheTime","meta","addObserver","clearGcTimeout","notify","mutation","removeObserver","optionalRemove","_this$retryer$continu","_this$retryer","retryer","continue","executeMutation","_this$options$retry","mutationFn","variables","onFail","failureCount","onPause","retry","networkMode","restored","_this$mutationCache$c3","_this$mutationCache$c4","_this$options$onSucce","_this$options2","_this$mutationCache$c5","_this$mutationCache$c6","_this$options$onSettl","_this$options3","_this$mutationCache$c","_this$mutationCache$c2","_this$options$onMutat","_this$options","onMutate","onSuccess","onSettled","_this$mutationCache$c7","_this$mutationCache$c8","_this$options$onError","_this$options4","_this$mutationCache$c9","_this$mutationCache$c10","_this$options$onSettl2","_this$options5","failureReason","isPaused","batch","onMutationUpdate","MutationCache","mutations","getLogger","defaultMutationOptions","mutationKey","getMutationDefaults","filters","exact","findAll","resumePausedMutations","_this$resuming","resuming","pausedMutations","notifyManager","transactions","notifyFn","batchNotifyFn","schedule","originalQueue","batchCalls","setNotifyFunction","setBatchNotifyFunction","createNotifyManager","onlineEvents","OnlineManager","onOnline","online","setOnline","isOnline","onLine","onlineManager","Query","abortSignalConsumed","queryKey","queryHash","hasData","initialDataUpdatedAt","dataUpdateCount","dataUpdatedAt","errorUpdateCount","errorUpdatedAt","fetchFailureCount","fetchFailureReason","fetchMeta","isInvalidated","fetchStatus","updatedAt","manual","setStateOptions","silent","isDisabled","getObserversCount","isStale","getCurrentResult","isStaleByTime","staleTime","_this$retryer2","shouldFetchOnWindowFocus","refetch","cancelRefetch","_this$retryer3","shouldFetchOnReconnect","revert","cancelRetry","invalidate","fetchOptions","_this$options$behavio","_context$fetchOptions","_this$retryer4","continueRetry","queryFn","queryFnContext","pageParam","addSignalProperty","fetchFn","_context$fetchOptions2","behavior","onFetch","revertState","_this$cache$config$on","_this$cache$config","_this$cache$config$on2","_this$cache$config2","isFetchingOptimistic","_this$cache$config$on3","_this$cache$config3","_this$cache$config$on4","_this$cache$config4","_action$meta","_action$dataUpdatedAt","onQueryUpdate","QueryCache","queries","queriesMap","_options$queryHash","defaultQueryOptions","getQueryDefaults","queryInMap","arg1","arg2","infiniteQueryBehavior","_context$fetchOptions3","_context$fetchOptions4","_context$state$data","_context$state$data2","refetchPage","fetchMore","isFetchingNextPage","isFetchingPreviousPage","oldPages","oldPageParams","pageParams","newPageParams","buildNewPages","fetchPage","_context$signal","_context$signal2","aborted","queryFnResult","getNextPageParam","getPreviousPageParam","QueryClient","queryCache","queryDefaults","mutationDefaults","mountCount","mount","unsubscribeFocus","unsubscribeOnline","unmount","_this$unsubscribeFocu","_this$unsubscribeOnli","isFetching","isMutating","fetching","getQueryData","_this$queryCache$find","ensureQueryData","arg3","parsedOptions","cachedData","fetchQuery","getQueriesData","queryKeyOrFilters","getQueryCache","setQueryData","prevData","defaultedOptions","setQueriesData","getQueryState","_this$queryCache$find2","removeQueries","resetQueries","refetchFilters","refetchQueries","cancelQueries","cancelOptions","invalidateQueries","_filters$refetchType","refetchType","_options$cancelRefetc","throwOnError","prefetchQuery","fetchInfiniteQuery","prefetchInfiniteQuery","getMutationCache","getDefaultOptions","setDefaultOptions","setQueryDefaults","firstMatchingDefaults","setMutationDefaults","_defaulted","refetchOnReconnect","useErrorBoundary","suspense","Removable","gcTimeout","newCacheTime","defaultRetryDelay","canFetch","CancelledError","isCancelledError","createRetryer","continueFn","promiseResolve","promiseReject","isRetryCancelled","isResolved","outerResolve","outerReject","shouldPause","continueResolve","canContinue","run","promiseOrValue","_config$retry","_config$retryDelay","shouldRetry","Subscribable","isServer","functionalUpdate","isValidTimeout","timeUntilStale","parseQueryArgs","isQueryKey","parseMutationArgs","parseFilterArgs","matchQuery","stale","hashQueryKeyByOptions","partialMatchKey","matchMutation","hashQueryKey","queryKeyHashFn","partialDeepEqual","replaceEqualDeep","isPlainArray","aSize","bItems","bSize","equalItems","shallowEqualObjects","hasObjectPrototype","prot","sleep","scheduleMicrotask","getAbortController","replaceData","isDataEqual","structuralSharing","ReactQueryDevtools","defaultContext","QueryClientSharingContext","getQueryClientContext","contextSharing","ReactQueryClientContext","useQueryClient","queryClient","QueryClientProvider","Context","MutationObserver","bindMethods","updateResult","mutate","_this$currentMutation","currentMutation","_this$currentMutation2","notifyOptions","currentResult","mutateOptions","isLoading","isSuccess","isIdle","_this$mutateOptions$o","_this$mutateOptions","_this$mutateOptions$o2","_this$mutateOptions2","_this$mutateOptions$o3","_this$mutateOptions3","_this$mutateOptions$o4","_this$mutateOptions4","useMutation","onStoreChange","mutateAsync","QueryObserver","trackedProps","selectError","currentQuery","shouldFetchOnMount","executeFetch","updateTimers","shouldFetchOn","refetchOnWindowFocus","clearStaleTimeout","clearRefetchInterval","prevQuery","updateQuery","mounted","shouldFetchOptionally","updateStaleTimeout","nextRefetchInterval","computeRefetchInterval","currentRefetchInterval","updateRefetchInterval","getOptimisticResult","createResult","optimisticResult","keepPreviousData","placeholderData","isPlaceholderData","shouldAssignObserverCurrentProperties","currentResultOptions","currentResultState","trackResult","trackedResult","getCurrentQuery","fetchOptimistic","_fetchOptions$cancelR","staleTimeoutId","_this$options$refetch","refetchInterval","nextInterval","refetchIntervalId","refetchIntervalInBackground","prevResult","prevResultState","prevResultOptions","queryChange","queryInitialState","currentQueryInitialState","prevQueryResult","previousQueryResult","isPreviousData","_optimisticResults","fetchOnMount","fetchOptionally","selectFn","selectResult","isInitialLoading","isFetched","isFetchedAfterMount","isRefetching","isLoadingError","isRefetchError","nextResult","defaultNotifyOptions","notifyOnChangeProps","notifyOnChangePropsValue","includedProps","typedKey","shouldNotifyListeners","retryOnMount","shouldLoadOnMount","refetchOnMount","createValue","isReset","clearReset","QueryErrorResetBoundaryContext","useQueryErrorResetBoundary","IsRestoringContext","useIsRestoring","ensurePreventErrorBoundaryRetry","errorResetBoundary","useClearResetErrorBoundary","getHasError","ensureStaleTime","shouldSuspend","isRestoring","willFetch","useQuery","Observer","useBaseQuery","shouldThrowError","_useErrorBoundary"],"sourceRoot":""}